果你在電腦上沒(méi)安裝可視化數(shù)據(jù)庫(kù)操作蕊唐,需要在cmd命令行輸入命令操作數(shù)據(jù)庫(kù)屋摔,那么可能會(huì)用以下命令
(1)連接數(shù)據(jù)庫(kù)
? ? * 打開(kāi)cmd窗口,使用命令替梨,連接mysql數(shù)據(jù)庫(kù)
? ? * 命令: mysql -u root -p 密碼? ? -u username? ? -p? password? ? ? ?
(2)創(chuàng)建數(shù)據(jù)庫(kù)
? ? * 語(yǔ)句: create database 數(shù)據(jù)庫(kù)的名稱;
? ? ** 示例:create database testdb1;
(3)查看所有的數(shù)據(jù)庫(kù)
? ? * 語(yǔ)句:show databases;
(4)刪除數(shù)據(jù)庫(kù)
? ? * 語(yǔ)句:drop database 要?jiǎng)h除的數(shù)據(jù)庫(kù)的名稱;
? ? ** 示例: drop database testdb1;
(5)切換數(shù)據(jù)庫(kù)
? ? * 如果想要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)庫(kù)表钓试,這個(gè)表要在一個(gè)數(shù)據(jù)庫(kù)里面,所以需要切換到數(shù)據(jù)庫(kù)
? ? * 語(yǔ)句:use 要切換的數(shù)據(jù)庫(kù)的名稱;
? ? ** 示例:use testdb2;
(6)查看數(shù)據(jù)庫(kù)表的建表結(jié)構(gòu)副瀑。
? ? show create database 表名;
下面是關(guān)于SQL語(yǔ)句的筆記
(1)創(chuàng)建數(shù)據(jù)庫(kù)表
? ? * 語(yǔ)句 create table 表名稱 (
? ? ? ? 字段 類型,
? ? ? ? 字段 類型
? ? ? ? ? )
? ? * 創(chuàng)建表 user弓熏,字段? id? username? password? sex
? ? create table user (
? ? ? ? id int,
? ? ? ? username varchar(40),
? ? ? ? password varchar(40),
? ? ? ? sex varchar(30)
? ? )
(2)mysql的數(shù)據(jù)類型
? ? 字符串型
? ? VARCHAR、CHAR
? ? * 當(dāng)創(chuàng)建表時(shí)候糠睡,使用字符串類型挽鞠,name varchar(40),指定數(shù)據(jù)的長(zhǎng)度
? ? * varchar和char的區(qū)別
? ? ** varchar的長(zhǎng)度是可變的狈孔,比如 name varchar(5),存值 a 信认,直接把a(bǔ)存進(jìn)去? //a<5(a不能超過(guò)5)
? ? ** char的長(zhǎng)度是固定的,比如 name char(5),存值 b均抽,把b存進(jìn)去狮杨,后面加很多空格? //b<5(b也不能超過(guò)5)
? ? 大數(shù)據(jù)類型
? ? BLOB、TEXT
? ? * 使用這個(gè)類型可以存儲(chǔ)文件到忽,一般開(kāi)發(fā)橄教,不會(huì)直接把文件存到數(shù)據(jù)庫(kù)里面,存文件的路徑
? ? 數(shù)值型
? ? TINYINT 喘漏、SMALLINT护蝶、INT、BIGINT翩迈、FLOAT持灰、DOUBLE
? ? * 對(duì)應(yīng)java里面
? ? byte? ? ? short? ? int? long? ? float? double
? ? 邏輯性
? ? BIT
? ? * 類似java里面的boolean
? ? 日期型
? ? DATE:用于表示日期 1945-08-15
? ? TIME:用于表示時(shí)間 19:10:40
? ? 下面的兩個(gè)類型可以表示日期和時(shí)間
? ? DATETIME:手動(dòng)添加時(shí)間到數(shù)據(jù)表里面
? ? TIMESTAMP:自動(dòng)把時(shí)間添加到表里面
(3)查看表結(jié)構(gòu)
? ? * 語(yǔ)句 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
? ? ? ? * 表示數(shù)據(jù)不能為空
? ? 第二種负饲,唯一性約束 unique
? ? ? ? * 表中的記錄不能重復(fù)的
? ? 第三種堤魁,主鍵約束 primary key
? ? ? ? * 表示非空喂链,唯一性
? ? ? ? * 自動(dòng)增長(zhǎng) auto_increment
(5)創(chuàng)建帶約束的表
? ? 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)刪除表
? ? * 語(yǔ)句 drop table 要?jiǎng)h除表的名稱;
(7)查看當(dāng)前的數(shù)據(jù)庫(kù)里面有哪些表
? ? * 語(yǔ)句 show tables;
使用sql對(duì)表中的記錄進(jìn)行操作(增刪改查操作)
? ? (1)向表里面添加記錄 insert
? ? * 語(yǔ)句 insert into 要添加的表名稱 values(要添加的值);
? ? * 注意:當(dāng)添加的字段的數(shù)據(jù)類型是int類型,直接寫值
? ? 如果添加的字段的類型是varchar類型和日期類型妥泉,使用單引號(hào)把值包起來(lái)
? ? * 例如:向user表里面添加記錄
? ? insert into user values(1,'aaa','123456','nan');
? ? * 自動(dòng)增長(zhǎng)的效果
? ? ** 創(chuàng)建一個(gè)表
? ? create table stu (
? ? ? ? id int primary key atuo_increment,
? ? ? ? sname varchar(40)
? ? )
? ? insert into stu values(null,'aaa');
? ? (2)修改表里面的記錄 update
? ? * 語(yǔ)句 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
? ? * 語(yǔ)句 delete from 表名稱 where 條件
? ? * 例如:刪除user表里面id=1的記錄
? ? delete from user where id=1;
? ? ** 不添加where條件,把表里面的所有的記錄都刪除
? ? (4)查詢表中的記錄 select
? ? * 語(yǔ)句 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表里面的所有的數(shù)據(jù)
? ? select * from user;
? ? * 例如二:查詢user表里面用戶名和語(yǔ)文成績(jī)
? ? select username,chinese from user;
? ? * 例如三:查詢user表里面id=2的數(shù)據(jù)
? ? select * from user where id=2;
? ? (4)別名
? ? * as 別名
? ? select username as u1,chinese as c1 from user;
? ? (5)distinct盲链,去除表里面重復(fù)記錄
? ? * 語(yǔ)句 select distinct * from 表名;
? ? (6)where子句
? ? 一蝇率,運(yùn)算符 < > >= <=
? ? * 例如:查詢user表里面語(yǔ)文成績(jī)大于60的所有的人員
? ? select * from user where chinese > 60;
? ? 二,in:指定的數(shù)
? ? * 例如:查詢user表里面英語(yǔ)成績(jī)是80刽沾、90的人員的信息
? ? select * from user where english in (80,90);
? ? 三本慕,and:在where里面如果有多個(gè)條件,表示多個(gè)條件同時(shí)滿足
? ? * 例如:查詢user表里面語(yǔ)文成績(jī)是100侧漓,并且英語(yǔ)成績(jī)是30的人員的信息
? ? select * from user where chinese=100 and english=30; //對(duì)于同一個(gè)人的英語(yǔ)成績(jī)及語(yǔ)文成績(jī)同時(shí)滿足
? ? 四锅尘,得到區(qū)間范圍的值
? ? * 例如:查詢user表里面語(yǔ)文成績(jī)?cè)?0-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個(gè)字符? ? _? 表示匹配任意一個(gè)字符
? ? (7)查看當(dāng)前的運(yùn)行的數(shù)據(jù)庫(kù)
? ? select database();
? ? (8)對(duì)表中查詢的記錄排序 order by
? ? * order by寫在select語(yǔ)句的最后
? ? 第一,升序 order by 要排序字段 asc(asc可以省略何鸡,默認(rèn)的情況下就是升序)
? ? * 例如:對(duì)user表里面查詢的數(shù)據(jù),根據(jù)語(yǔ)文成績(jī)進(jìn)行升序排列
? ? select * from user order by chinese asc;
? ? 第二牛欢,降序 order by 要排序字段 desc
? ? * 例如:對(duì)user表里面的英語(yǔ)成績(jī)進(jìn)行降序排列
? ? select * from user order by english desc;
8骡男、聚集函數(shù)
? ? (1)使用提供一些函數(shù),直接實(shí)現(xiàn)某些功能
? ? (2)常用的聚集函數(shù)
? ? 第一傍睹,count()函數(shù)
? ? * 根據(jù)查詢的結(jié)果隔盛,統(tǒng)計(jì)記錄數(shù)
? ? * 寫法 select count(*) from ...where....
? ? * 例如一;查詢user表里面有多少條記錄
? ? select count(*) from user;
? ? * 例如二:查詢user表里面語(yǔ)文成績(jī)大于60的人員有多少
? ? select count(*) from user where chinese>60;
? ? 第二拾稳,sum()函數(shù)
? ? * 求和的函數(shù)
? ? * 寫法 select sum(要進(jìn)行求和字段) from ...where....
? ? * 例如一:得到user表里面的語(yǔ)文的總成績(jī)
? ? select sum(chinese) from user;
? ? * 例如二:得到user表里面語(yǔ)文總成績(jī)吮炕,英語(yǔ)的總成績(jī)
? ? select sum(chinese),sum(english) from user;
? ? * 例如三:得到user表里面語(yǔ)文成績(jī)的平均分(總的成績(jī)/總的人數(shù))
? ? select sum(chinese)/count(*) from user;
? ? 第三,avg()函數(shù)
? ? * 計(jì)算的平均數(shù)的函數(shù)
? ? * 寫法 select avg(要計(jì)算平均數(shù)的字段名稱) from ...
? ? * 例如:得到user表里面語(yǔ)文成績(jī)的平均分
? ? select avg(chinese) from user;
? ? 第四访得,max()函數(shù):計(jì)算最大值
? ? * 寫法 select max(字段) from...
? ? 第五龙亲,min()函數(shù):計(jì)算最小值
? ? * 寫法 select min(字段) from...
? ? * 例如:得到user表里面語(yǔ)文成績(jī)的最高分?jǐn)?shù),英語(yǔ)的成績(jī)最低分?jǐn)?shù)
? ? select max(chinese),min(english) from user;
9悍抑、分組操作?
? ? 分組使用 group by 根據(jù)分組的字段
? ? 在分組的基礎(chǔ)之上再進(jìn)行條件的判斷 having鳄炉,后面可以寫聚集函數(shù)
? ? (1)例如說(shuō)明
? ? * 創(chuàng)建表 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,'手機(jī)',500);
? ? insert into orders values(5,'手機(jī)',500);
? ? insert into orders values(6,'鼠標(biāo)',33);
? ? insert into orders values(7,'鼠標(biāo)',33);
? ? (2)例如一:統(tǒng)計(jì)orders表里面每類商品的總的價(jià)格
? ? select name,sum(price) from orders group by name;
? ? (3)例如二:對(duì)商品進(jìn)行分類,得到每類商品的總價(jià)格大于66的商品
? ? select name,sum(price) from orders where sum(price)>66 group by name;
? ? = 上面的語(yǔ)句在邏輯上沒(méi)有問(wèn)題搜骡,在語(yǔ)法上拂盯,where里面不能寫聚集函數(shù),報(bào)錯(cuò)
? ? 正確的寫法:
? ? select name,sum(price) from orders group by price having sum(price)>66;
mysql的關(guān)鍵字limit
? ? (1)limit關(guān)鍵字查詢表中的某幾條記錄
? ? (2)limit關(guān)鍵字不是標(biāo)準(zhǔn)sql的關(guān)鍵字记靡,只能在mysql數(shù)據(jù)庫(kù)里面使用谈竿,實(shí)現(xiàn)分頁(yè)的功能
? ? * 在oracle里面特有關(guān)鍵字 rownum
? ? * 在sqlserver里面特有關(guān)鍵字 top
? ? (3)使用limit查詢前幾條記錄
? ? * 寫法: limit 前幾條記錄? limit 3
? ? * 例如:查詢user表里面前三條記錄
? ? select * from user limit 3;
? ? select * from user limit 0,3;
? ? (4)使用limit查詢第幾條到第幾條記錄
? ? * 寫法: limit 第一個(gè)參數(shù),第二個(gè)參數(shù)
? ? ** 第一個(gè)參數(shù)開(kāi)始的記錄數(shù)的位置团驱,從0開(kāi)始的
? ? ** 第二個(gè)參數(shù)從開(kāi)始的位置向后獲取幾條記錄
? ? * 例如:查詢user表里面第二條到第四條記錄
? ? select * from user limit 1,3;
修改MySql數(shù)據(jù)庫(kù)的的密碼
(1)知道密碼,修改密碼
? ? 第一空凸,連接mysql數(shù)據(jù)庫(kù)
? ? 第二嚎花,切換數(shù)據(jù)庫(kù) mysql? use mysql
? ? 第三,進(jìn)行密碼的修改 update user set password=password('要修改成的密碼的值') where user='root';
? ? 第四劫恒,重新啟動(dòng)mysql服務(wù)
忘記MySQL數(shù)據(jù)庫(kù)密碼操作
忘記密碼贩幻,重置密碼
? ? 第一,把mysql的服務(wù)關(guān)閉? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? 第二两嘴,打開(kāi)cmd窗口丛楚,輸入命令 mysqld --skip-grant-tables(不要加分號(hào)) //skip:跳過(guò)? grant:權(quán)限?
? ? 第三,再打開(kāi)cmd窗口憔辫,連接數(shù)據(jù)庫(kù)趣些,不需要輸入密碼? mysql -u root
? ? 第四,切換數(shù)據(jù)庫(kù) mysql? use mysql
? ? 第五贰您,進(jìn)行密碼的修改 update user set password=password('要修改成的密碼的值') where user='root';
? ? 第六坏平,把兩個(gè)cmd窗口都關(guān)閉,打開(kāi)任務(wù)管理器锦亦,找到mysqld進(jìn)程舶替,結(jié)束
? ? 第七,啟動(dòng)mysql服務(wù)
---------------------