4 MySQL常用管理命令
管理命令加 ;
quit; 退出服务器连接
show databases; 显示服务器上有哪些数据库
use 数据库名; 进入指定的数据库
show tables; 显示当前数据库中所有的数据表
desc 表名; 描述表中都有哪些列(表头)describe(描述)
练习:使用来宾账户登录mysql数据库服务器,查看有哪些数据库 |
->mysql -uroot -> show databases; |
练习:分别进入test和phpmyadmin |
-> use test; -> use phpmyadmin; |
练习:查看phpmyadmin中以下表都有哪些列? pma__recent pma__history pma__favorite |
->mysql -uroot //连接数据库 -> use phpmyadmin;进入数据库 -> desc pma__recent; -> desc pma__history; -> desc pma__favorite; |
5.SQL语句
SQL: Structured Query Language,结构化查询语言,用于操作关系型数据库服务器,对数据执行增、删、改、查等操作。
SQL命令的两种执行方式:
1)交互模式:客户端输入一行,点击回车,服务器执行一行。适用于临时性的查看数据
2)脚本模式:客户端吧要执行的多行命令编写在一个文本文件中,一次性交给服务器执行。适用于批量的操作方式
mysql -uroot < c:/xampp/..../02.sql(文件路径)回车(未登录数据库)
---> source < c:/xampp/..../02.sql (已登陆数据库)
练习:使用脚本模式(03.sql)向服务器中提交多行SQL命令,包括显示所有的数据库、进入到phpmyadmin,显示所有的数据表,显示pma__recent有哪些列。尝试把其中一行写错,查看执行效果。 |
03.sql show databases; use phpmyadmin; show tables; desc pma__recent;
mysql -uroot < E:\Web_XC\1903\2_MYSQL\day01\03.sql |
SQL语法规范
(1)每条语句必须以英文的分号作为结尾,一条语句可以跨越多行。
(2)若某一条语句出现语法错误,则此条语句以及后边所有的语句不会再执行。
(3)SQL命令不区分大小写,习惯上数据库关键字用大写,非关键字用小写。
(4)SQL命令中可以使用单行注释(#...)和多行注释(/*...*/),注释的内容不会被服务器所执行。
常用SQL命令
(1) 丢弃指定数据库,如果存在
DROP DATABASE IF EXISTS 数据库名;
(2) 创建新的数据库
CREATE DATABASE 数据库名;
(3)进入数据库
USE 数据库名;
(4) 创建保存数据的表
CREATE TABLE 表名(
id INT,
name VARCHAR(80),
score INT
);
(5)向数据表中插入数据(value插入多行数据时较快,values插入一行数据时较快)
INSERT INTO 表名 VALUE(' 1', 'tom','90');
(6)查询数据表中的所有数据
SELECT * FROM 表名;
(7)修改数据
UPDATE 表名 SET score='95',name='tomi' WHERE id='6';
(8)删除数据
DELETE FROM 表名 WHERE id='3';
练习:编写脚本文件04_td.sql,先丢弃数据库td,如果存在;再创建数据库tedu,进入该数据库。 |
04_td.sql #丢弃数据库td,如果存在 DROP DATABASE IF EXISTS td; #创建数据库td CREATE DATABASE td; #进入该数据库 USE td; |
练习:在tedu数据库中创建保存员工数据的表emp,包含员工编号eid、姓名name、地址addr、电话phone。 |
CREATE TABLE emp( eid INT, name VARCHAR(80), addr VARCHAR(80), phone INT ); |
练习:编写脚本文件05_dang.sql,先丢弃再创建数据库dang;进入到该数据库,创建保存图书的表book,包含编号bid、标题title、价格price、出版社publish;插入4条数据,删除编号为3的数据,修改编号为2的数据,查询所有数据。 |
#先丢弃再创建数据库dang,进入到该数据库, DROP DATABASE IF EXISTS dang; CREATE DATABASE dang; USE dang; #创建保存图书的表book,包含编号bid、标题title、价格price、出版社publish; CREATE TABLE book( bid INT, title VARCHAR(20), price FLOAT(2), publish VARCHAR(20) ); #插入4条数据, INSERT INTO book VALUE( '11','chinese','25.5','cq'); INSERT INTO book VALUE('12','math','35.5','sh'); INSERT INTO book VALUE( '13','english','40.00','bj'); INSERT INTO book VALUE( '14','pe','20','sz'); #删除编号为3的数据, DELETE FROM book WHERE bid='13'; #修改编号为2的数据, UPDATE book SET title='hello',price='5',publish='sc' WHERE bid='12'; #查询所有数据。 SELECT * FROM book; |
课后练习 (2)练习:编写脚本文件xz.sql,先丢弃再创建数据库xz;进入该数据库,创建保存用户的表user,包含uid,uname,upwd,email,phone,sex,userName(真实姓名),regTime(注册时间),isOnline(是否在线);插入5条数据,删除1条,更改1条,查询数据。
|
#先丢弃再创建数据库xz;进入该数据库, DROP DATABASE IF EXISTS xz; CREATE DATABASE xz; USE xz; #创建保存用户的表user,包含uid,uname,upwd,email,phone,sex,userName(真实姓名),regTime(注册时间),isOnline(是否在线); CREATE TABLE user( uid INT, uname VARCHAR(20), upwd VARCHAR(20), #字符串密码 email VARCHAR(20), phone VARCHAR(11), sex VARCHAR(1), userName VARCHAR(20), regTime VARCHAR(20), #2019/4/2 isOnline VARCHAR(1) ); #插入5条数据, INSERT INTO user VALUE('661','tom','tompwd','@tom123.com','12345678521','m','tom','2019/4/2','T'); INSERT INTO user VALUE('662','jack','jackpwd','@jack163.com','1511212234','m','jack','2019/4/2','T'); INSERT INTO user VALUE('663','main','mainpwd','@mainqq.com','12345678521','f','tom','2019/4/2','F'); INSERT INTO user VALUE('664','anny','annypwd','@annyoutlook.com','15222348521','f','anny','2019/4/2','T'); INSERT INTO user VALUE('665','sum','sumpwd','@sum139.com','13925878521','m','sum','2019/4/2','T'); #删除1条,uid=663 DELETE FROM user WHERE uid='663'; #更改1条, UPDATE user SET uname='coffe',isOnline='F' WHERE uid='665'; #查询数据。 SELECT * FROM user; |
1.标准SQL语句分类:
DDL: Data Define Language 定义数据结构
CREATE/DROP/ALTER(修改表结构)
DML: Data Manipulate Language 操作数据
INSERT/UPDATE/DELETE
DQL: Data Query Language 查询数据
SELECT
DCL: Data Control Language 控制用户权限
GRANT(授权)/REVOKE(收权)
2.计算机存储字符
2.1存储英文字符
ASCII:总共有128个,对所有的英文字母和符号进行编码。
abc ->979899 ABC ->656667
Lation-1:总共有256,兼容ASCII码,同时对欧洲符合进行编码(MySQL默认使用编码)
2.2存储中文字符
GB2312:对常用六千多汉字进行编码,兼容ASCII码
GBK:对两万多汉字进行编码,兼容GB2312
GIB5:台湾繁体字编码,兼容ASCII码
Unicode:对世界上主流国家常用语言进行编码,兼容ASCII码,不兼容GB2312、GBK、GIB5.(具体分为UTF-8、UTF-16、UTF-32存储方案)
2.3解决MySQL存储中文乱码
使用UTF-8编码形式
1)sql脚本文件另存为UTF-8编码形式
2)客户端连接服务器编码(SET NAMES UTF8)
3)服务器端创建数据库使用的编码(CREATE DATABASE xz CHARSET=UTF8;)
练习:编写脚本文件05_dang.sql,先丢弃再创建数据库dang;进入到该数据库,创建保存图书的表book,包含编号bid、标题title、价格price、出版社publish;插入4条数据,在交互模式下查询 |
#客户端连接服务器设置UFT8 SET NAMES UTF8; #先丢弃再创建数据库dang,进入到该数据库, DROP DATABASE IF EXISTS dang; CREATE DATABASE dang CHARSET=UTF8; USE dang; #创建保存图书的表book,包含编号bid、标题title、价格price、出版社publish; CREATE TABLE book( bid INT, title VARCHAR(20), price FLOAT(5,2), publish VARCHAR(20) ); #插入4条数据, INSERT INTO book VALUE( '11','高中语文','25.5','重庆大学出版社'), ('12','高中数学','35.5','上海人民教育出版社'), ( '13','小学英语','40.00','上海复旦大学出版社'), ( '14','初中物理','20','北京大学出版社'); |
练习:编写脚本文件01_sina.sql,创建数据库sina,设置存储编码为UTF8,进入该数据库,创建数据表news保存新闻数据,包含nid,title(标题),ctime(发表时间),content(内容),author(作者),cfrom(来源);插入若干条数据。在交互模式下查询数据。 |
#创建数据库sina,设置存储编码为UTF8,进入该数据库, SET NAMES UTF8; DROP DATABASE IF EXISTS sina; CREATE DATABASE sina CHARSET=UTF8; USE sina; #创建数据表news保存新闻数据,包含nid,title(标题),ctime(发表时间),content(内容),author(作者),cfrom(来源) CREATE TABLE news( nid INT, title VARCHAR(20), ctime VARCHAR(10), content VARCHAR(50), author VARCHAR(4), cfrom VARCHAR(10)); #插入若干条数据。在交互模式下查询数据。 INSERT INTO news VALUE ('1','号召全社会','2019-04-03','铭记英雄','人民网','中国共产党新闻网'), ('2','号召全社会','2019-04-03','崇尚英雄','人民网','中国共产党新闻网'), ('3','号召全社会','2019-04-03','捍卫英雄','人民网','中国共产党新闻网'), ('4','号召全社会','2019-04-03','学习英雄','人民网','中国共产党新闻网'), ('5','号召全社会','2019-04-03','关爱英雄','人民网','中国共产党新闻网'); |
3.MySQL中的列类型
创建数据表的时候,指定的列可以存储的数据类型
CREATE TABLE table_name( id 列类型);
TB——>GB——>MB——>KB——>BYTE(字节)——>BIT(位) 1024 1024 1024 1024 8 |
数值类型、日期时间类型、字符串类型
3.1数值类型
TINYINT 微整型,占1个字节 范围 -128~127 引号可加可不加
SMALLINT 小整型,占2个字节 范围 -32768~32767
INT 整型,占4字节 范围 -2147483648~2147483647
BIGINT 大整型,占8字节
FLOAT(M,D) 单精度浮点型,占4字节 最多3.4E38(3.4*10^38),可能产生计算误差
DOUBLE(M,D) 双精度浮点型, 占8字节,范围比BIGINT大的多,可能产生误差
DECIMAL(M,D) 定点小数,不会产生计算误差。M代表总的有效位数,D代表小数点后的有效位数
BOOL 布尔型,只有两个结果TRUE、FALSE(不能加引号),真正存储数据的时候会自动变成1和0;也可以直接使用1和0,数据库列类型会自动变成TINYINT
3.2日期时间类型
DATE 日期型 '2019-04-03' 引号必须加
TIME 时间型 '14:37:50'
DATETIME 日期时间型 '2019-04-03 14:37:50'
3.3字符串类型
VARCHAR(M) 变长字符串,不会产生空间浪费,操作速度相对慢,M最大值是65535
CHAR(M) 定长字符串,可能产生空间浪费,操作速度相对快,M最大值是255;用于存储手机号码、身份证号码等固定长度的字符串。
TEXT 大型变长字符串,M最多2G 引号必须加
|
CHAR(5) |
VARCHAR(5) |
a |
a\0\0\0\0(空格) |
a\0 |
ab |
ab\0\0\0 |
ab\0 |
abcde |
abcde |
abcde |
一二三 |
一二三\0\0 |
一二三\0 |
列名 |
类型 |
id |
INT |
age |
TINYINT |
commentCount(回复量) |
INT |
price |
DECIMAL(6,2) #9999.99 |
phone |
CHAR(11), |
sex |
BOOL |
pubTime |
DATE |
练习: 编写02_xuezi.sql文件,先丢弃再创建数据库xuezi,设置存储的编码为UTF8,进入该数据库,创建保存笔记本数据的表laptop,包含lid,title(标题),price(价格),stockCount(库存量),shelfTime(上架时间),isIndex(是否为首页推荐);插入4条数据
|
#先丢弃再创建数据库xuezi,设置存储的编码为UTF8,进入该数据库, SET NAMES UTF8; DROP DATABASE IF EXISTS xuezi; CREATE DATABASE xuezi CHARSET=UTF8; USE xuezi; #创建保存笔记本数据的表laptop,包含lid,title(标题),price(价格),stockCount(库存量),shelfTime(上架时间),isIndex(是否显示在首页);插入4条数据 CREATE TABLE laptop( lid INT, title VARCHAR(20), price DECIMAL(7,2), #99999.99 stockCount SMALLINT, shelfTime DATETIME, isIndex BOOL ); INSERT INTO laptop VALUE ('1','ASUS(华硕)','7999.99','20','2019-04-03 15:15:15',TRUE), ('2','DELL(戴尔)','6999.99','18','2019-04-03 15:15:15',RTUE), ('3','Thinkpad(联想)','7999.99','22','2019-04-03 15:15:15',FALSE), ('4','Apple(苹果)','7999.99','29','2019-04-03 15:15:15',TRUE); |
练习:编写脚本文件03_tedu.sql,创建数据库tedu,设置存储的编码为UTF8;进入该数据库,创建保存部门数据的表dept,包含did,dname(部门名称),empCount(员工数量);插入以下数据 10 研发部 3 20 运营部 2 30 市场部 2 创建保存员工数据的表emp,包含eid,ename(姓名),sex(性别),birthday(生日),salary(工资) ,deptId所属部门编号 插入若干条数据。
|
#练习:编写脚本文件03_tedu.sql,创建数据库tedu,设置存储的编码为UTF8;进入该数据库, SET NAMES UTF8; DROP DATABASE IF EXISTS tedu; CREATE DATABASE tedu CHARSET=UTF8; USE tedu; #创建保存部门数据的表dept, CREATE TABLE dept( did INT, dname VARCHAR(5), empCount INT ); #插入数据 INSERT INTO dept VALUE (10,'研发部',3), (20,'运营部',2), (30,'市场部',2); #创建保存员工数据的表emp, # 插入若干条数据。 CREATE TABLE emp( eid INT, ename VARCHAR(4), sex BOOL, #1 男 ,0 女 birthday DATE, salary DECIMAL(8,2), deptId INT ); INSERT INTO emp VALUE (1,'张三',TRUE,'2015-3-28',7658,10), (2,'李四',TRUE,'2010-3-28',7658,20), (3,'王五',TRUE,'2011-3-28',7658,30), (4,'麻六',TRUE,'2015-3-28',7658,10), (5,'赵二',TRUE,'2015-3-28',7658,30); |
课后任务: 编写脚本文件xz_2.sql,创建数据库xz,进入该数据库; 创建保存笔记本家族的表laptop_family,包含fid,fname 分类名称,laptopCount笔记本数量 10 联想 2 20 戴尔 2 30 小米 3 创建保存笔记本数据的表laptop,包含lid,title,price,spec规格,detail商品介绍,shelfTime,isOnsale是否在售,familyId所属家族编号; 插入若干条数据。
|
#设置服务器编码utf8 SET NAMES UTF8; #创建数据库xz_2,进入该数据库; DROP DATABASE IF EXISTS xz_2; CREATE DATABASE xz_2 CHARSET=UTF8; USE xz_2; #创建保存笔记本家族的表laptop_family, CREATE TABLE laptop_family( fid INT PRIMARY KEY, fname VARCHAR(10), laptopCount SMALLINT ); INSERT INTO laptop_family VALUE (10,'联想',2) ; INSERT INTO laptop_family VALUE (20,'戴尔',2); INSERT INTO laptop_family VALUE (30,'小米',3); #创建保存笔记本数据的表laptop, CREATE TABLE laptop( lid INT PRIMARY KEY, title VARCHAR(50), price DECIMAL(7,2), spec VARCHAR(20), detail VARCHAR(3000), shelfTime DATE, isOnline BOOL, familyId INT ); #插入若干条数据。 INSERT INTO laptop VALUE (1,'联想A23',79999,'超薄','商品详情1','2017-11-11',1,10); INSERT INTO laptop VALUE (2,'戴尔B56',59999,'轻便', '商品详情2','2017-11-11',1,20); INSERT INTO laptop VALUE (3,'小米A23',69999,'普通', '商品详情3','2017-11-11',1,30); INSERT INTO laptop VALUE (4,'联想A25',79999,'超薄', '商品详情4','2017-11-11',0,10); |