果你在電腦上沒安裝可視化數據庫操作,需要在cmd命令行輸入命令操作數據庫,那么可能會用以下命令
(1)連接數據庫
? ? * 打開cmd窗口,使用命令,連接mysql數據庫
? ? * 命令: mysql -u root -p 密碼? ? -u username? ? -p? password? ? ? ?
(2)創建數據庫
? ? * 語句: create database 數據庫的名稱;
? ? ** 示例:create database testdb1;
(3)查看所有的數據庫
? ? * 語句:show databases;
(4)刪除數據庫
? ? * 語句:drop database 要刪除的數據庫的名稱;
? ? ** 示例: drop database testdb1;
(5)切換數據庫
? ? * 如果想要創建一個數據庫表,這個表要在一個數據庫里面,所以需要切換到數據庫
? ? * 語句:use 要切換的數據庫的名稱;
? ? ** 示例:use testdb2;
(6)查看數據庫表的建表結構。
? ? show create database 表名;
下面是關于SQL語句的筆記
(1)創建數據庫表
? ? * 語句 create table 表名稱 (
? ? ? ? 字段 類型,
? ? ? ? 字段 類型
? ? ? ? ? )
? ? * 創建表 user,字段? id? username? password? sex
? ? create table user (
? ? ? ? id int,
? ? ? ? username varchar(40),
? ? ? ? password varchar(40),
? ? ? ? sex varchar(30)
? ? )
(2)mysql的數據類型
? ? 字符串型
? ? VARCHAR、CHAR
? ? * 當創建表時候,使用字符串類型,name varchar(40),指定數據的長度
? ? * varchar和char的區別
? ? ** varchar的長度是可變的,比如 name varchar(5),存值 a ,直接把a存進去? //a<5(a不能超過5)
? ? ** char的長度是固定的,比如 name char(5),存值 b,把b存進去,后面加很多空格? //b<5(b也不能超過5)
? ? 大數據類型
? ? BLOB、TEXT
? ? * 使用這個類型可以存儲文件,一般開發,不會直接把文件存到數據庫里面,存文件的路徑
? ? 數值型
? ? TINYINT 、SMALLINT、INT、BIGINT、FLOAT、DOUBLE
? ? * 對應java里面
? ? byte? ? ? short? ? int? long? ? float? double
? ? 邏輯性
? ? BIT
? ? * 類似java里面的boolean
? ? 日期型
? ? DATE:用于表示日期 1945-08-15
? ? TIME:用于表示時間 19:10:40
? ? 下面的兩個類型可以表示日期和時間
? ? DATETIME:手動添加時間到數據表里面
? ? TIMESTAMP:自動把時間添加到表里面
(3)查看表結構
? ? * 語句 desc 表名稱;
? ? +----------+-------------+------+-----+---------+-------+
? ? | Field? ? | Type? ? ? ? | Null | Key | Default | Extra |
? ? +----------+-------------+------+-----+---------+-------+
? ? | id? ? ? | int(11)? ? | YES? |? ? | NULL? ? |? ? ? |
? ? | username | varchar(40) | YES? |? ? | NULL? ? |? ? ? |
? ? | password | varchar(40) | YES? |? ? | NULL? ? |? ? ? |
? ? | sex? ? ? | varchar(30) | YES? |? ? | NULL? ? |? ? ? |
? ? +----------+-------------+------+-----+---------+-------+
(4)mysql的約束有三種
? ? 第一種,非空約束 not null
? ? ? ? * 表示數據不能為空
? ? 第二種,唯一性約束 unique
? ? ? ? * 表中的記錄不能重復的
? ? 第三種,主鍵約束 primary key
? ? ? ? * 表示非空,唯一性
? ? ? ? * 自動增長 auto_increment
(5)創建帶約束的表
? ? create table person (
? ? ? ? id int primary key ,
? ? ? ? username varchar(40) not null,
? ? ? ? sex varchar(20)
? ? )
? ? +----------+-------------+------+-----+---------+-------+
? ? | Field? ? | Type? ? ? ? | Null | Key | Default | Extra |
? ? +----------+-------------+------+-----+---------+-------+
? ? | id? ? ? | int(11)? ? | NO? | PRI | NULL? ? |? ? ? |
? ? | username | varchar(40) | NO? |? ? | NULL? ? |? ? ? |
? ? | sex? ? ? | varchar(20) | YES? |? ? | NULL? ? |? ? ? |
? ? +----------+-------------+------+-----+---------+-------+
(6)刪除表
? ? * 語句 drop table 要刪除表的名稱;
(7)查看當前的數據庫里面有哪些表
? ? * 語句 show tables;
使用sql對表中的記錄進行操作(增刪改查操作)
? ? (1)向表里面添加記錄 insert
? ? * 語句 insert into 要添加的表名稱 values(要添加的值);
? ? * 注意:當添加的字段的數據類型是int類型,直接寫值
? ? 如果添加的字段的類型是varchar類型和日期類型,使用單引號把值包起來
? ? * 例如:向user表里面添加記錄
? ? insert into user values(1,'aaa','123456','nan');
? ? * 自動增長的效果
? ? ** 創建一個表
? ? create table stu (
? ? ? ? id int primary key atuo_increment,
? ? ? ? sname varchar(40)
? ? )
? ? insert into stu values(null,'aaa');
? ? (2)修改表里面的記錄 update
? ? * 語句 update 表名稱 set 要修改的字段的名稱1=修改的值1,要修改的字段的名稱2=修改的值2 where 條件
? ? * 例如:修改user表里面id=1的username修改為QQQ,修改password為999
? ? update user set username='QQQ',password='999' where id=1;
? ? (3)刪除表里面的記錄 delete
? ? * 語句 delete from 表名稱 where 條件
? ? * 例如:刪除user表里面id=1的記錄
? ? delete from user where id=1;
? ? ** 不添加where條件,把表里面的所有的記錄都刪除
? ? (4)查詢表中的記錄 select
? ? * 語句 select 要查詢的字段的名稱 (*) from 表名稱 where 條件
? ? * create table user (
? ? ? ? id int,
? ? ? ? username varchar(40),
? ? ? ? chinese int,
? ? ? ? english int
? ? )
? ? * insert into user values(1,'lucy',100,30);
? ? insert into user values(2,'mary',60,80);
? ? insert into user values(3,'jack',90,20);
? ? * 例如一:查詢user表里面的所有的數據
? ? select * from user;
? ? * 例如二:查詢user表里面用戶名和語文成績
? ? select username,chinese from user;
? ? * 例如三:查詢user表里面id=2的數據
? ? select * from user where id=2;
? ? (4)別名
? ? * as 別名
? ? select username as u1,chinese as c1 from user;
? ? (5)distinct,去除表里面重復記錄
? ? * 語句 select distinct * from 表名;
? ? (6)where子句
? ? 一,運算符 < > >= <=
? ? * 例如:查詢user表里面語文成績大于60的所有的人員
? ? select * from user where chinese > 60;
? ? 二,in:指定的數
? ? * 例如:查詢user表里面英語成績是80、90的人員的信息
? ? select * from user where english in (80,90);
? ? 三,and:在where里面如果有多個條件,表示多個條件同時滿足
? ? * 例如:查詢user表里面語文成績是100,并且英語成績是30的人員的信息
? ? select * from user where chinese=100 and english=30; //對于同一個人的英語成績及語文成績同時滿足
? ? 四,得到區間范圍的值
? ? * 例如:查詢user表里面語文成績在70-100之間的值
? ? 寫法一,select * from user where chinese >=70 and chinese <=100;
? ? 寫法二,select * from user where chinese between 70 and 100;
? ? 五,like:模糊查詢
? ? * 例如:查詢user表里面username包含a的人員信息
? ? select * from user where username like '%a%';
? ? % :表示查詢匹配 0-N個字符? ? _? 表示匹配任意一個字符
? ? (7)查看當前的運行的數據庫
? ? select database();
? ? (8)對表中查詢的記錄排序 order by
? ? * order by寫在select語句的最后
? ? 第一,升序 order by 要排序字段 asc(asc可以省略,默認的情況下就是升序)
? ? * 例如:對user表里面查詢的數據,根據語文成績進行升序排列
? ? select * from user order by chinese asc;
? ? 第二,降序 order by 要排序字段 desc
? ? * 例如:對user表里面的英語成績進行降序排列
? ? select * from user order by english desc;
8、聚集函數
? ? (1)使用提供一些函數,直接實現某些功能
? ? (2)常用的聚集函數
? ? 第一,count()函數
? ? * 根據查詢的結果,統計記錄數
? ? * 寫法 select count(*) from ...where....
? ? * 例如一;查詢user表里面有多少條記錄
? ? select count(*) from user;
? ? * 例如二:查詢user表里面語文成績大于60的人員有多少
? ? select count(*) from user where chinese>60;
? ? 第二,sum()函數
? ? * 求和的函數
? ? * 寫法 select sum(要進行求和字段) from ...where....
? ? * 例如一:得到user表里面的語文的總成績
? ? select sum(chinese) from user;
? ? * 例如二:得到user表里面語文總成績,英語的總成績
? ? select sum(chinese),sum(english) from user;
? ? * 例如三:得到user表里面語文成績的平均分(總的成績/總的人數)
? ? select sum(chinese)/count(*) from user;
? ? 第三,avg()函數
? ? * 計算的平均數的函數
? ? * 寫法 select avg(要計算平均數的字段名稱) from ...
? ? * 例如:得到user表里面語文成績的平均分
? ? select avg(chinese) from user;
? ? 第四,max()函數:計算最大值
? ? * 寫法 select max(字段) from...
? ? 第五,min()函數:計算最小值
? ? * 寫法 select min(字段) from...
? ? * 例如:得到user表里面語文成績的最高分數,英語的成績最低分數
? ? select max(chinese),min(english) from user;
9、分組操作?
? ? 分組使用 group by 根據分組的字段
? ? 在分組的基礎之上再進行條件的判斷 having,后面可以寫聚集函數
? ? (1)例如說明
? ? * 創建表 orders
? ? create table orders (
? ? ? ? id int,
? ? ? ? name varchar(40),
? ? ? ? price int
? ? )
? ? insert into orders values(1,'電視',2000);?
? ? insert into orders values(2,'電視',2000);
? ? insert into orders values(3,'蘋果',10);
? ? insert into orders values(4,'手機',500);
? ? insert into orders values(5,'手機',500);
? ? insert into orders values(6,'鼠標',33);
? ? insert into orders values(7,'鼠標',33);
? ? (2)例如一:統計orders表里面每類商品的總的價格
? ? select name,sum(price) from orders group by name;
? ? (3)例如二:對商品進行分類,得到每類商品的總價格大于66的商品
? ? select name,sum(price) from orders where sum(price)>66 group by name;
? ? = 上面的語句在邏輯上沒有問題,在語法上,where里面不能寫聚集函數,報錯
? ? 正確的寫法:
? ? select name,sum(price) from orders group by price having sum(price)>66;
mysql的關鍵字limit
? ? (1)limit關鍵字查詢表中的某幾條記錄
? ? (2)limit關鍵字不是標準sql的關鍵字,只能在mysql數據庫里面使用,實現分頁的功能
? ? * 在oracle里面特有關鍵字 rownum
? ? * 在sqlserver里面特有關鍵字 top
? ? (3)使用limit查詢前幾條記錄
? ? * 寫法: limit 前幾條記錄? limit 3
? ? * 例如:查詢user表里面前三條記錄
? ? select * from user limit 3;
? ? select * from user limit 0,3;
? ? (4)使用limit查詢第幾條到第幾條記錄
? ? * 寫法: limit 第一個參數,第二個參數
? ? ** 第一個參數開始的記錄數的位置,從0開始的
? ? ** 第二個參數從開始的位置向后獲取幾條記錄
? ? * 例如:查詢user表里面第二條到第四條記錄
? ? select * from user limit 1,3;
修改MySql數據庫的的密碼
(1)知道密碼,修改密碼
? ? 第一,連接mysql數據庫
? ? 第二,切換數據庫 mysql? use mysql
? ? 第三,進行密碼的修改 update user set password=password('要修改成的密碼的值') where user='root';
? ? 第四,重新啟動mysql服務
忘記MySQL數據庫密碼操作
忘記密碼,重置密碼
? ? 第一,把mysql的服務關閉? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? 第二,打開cmd窗口,輸入命令 mysqld --skip-grant-tables(不要加分號) //skip:跳過? grant:權限?
? ? 第三,再打開cmd窗口,連接數據庫,不需要輸入密碼? mysql -u root
? ? 第四,切換數據庫 mysql? use mysql
? ? 第五,進行密碼的修改 update user set password=password('要修改成的密碼的值') where user='root';
? ? 第六,把兩個cmd窗口都關閉,打開任務管理器,找到mysqld進程,結束
? ? 第七,啟動mysql服務
---------------------