MySQL基本操作回顾。第一集 UMAN

2020年2月14日,晚上7:00到2月15日凌晨一点。嗯
再学习了MYSQL的基本操作,中间浪荡的时间就别在意啦,吼吼

看这篇文章的老铁们,点下赞,点下关注。
感恩点赞,感恩关注

数据库相关术语
SQL 结构化查询语言
1、DDL数据定义语言
2、DML数据操作语言
3、DQL数据查询语言
4、DCL数据控制语言

MYSQL 相关操作
配置文件 my.cnf是MySQL的配置文件
登录MySQL mysql -uroot -p ; mysql -uroot -p(密码)
退出MySQL exit ;quit;\q
得到版本号 mysql -V
登录的同时打开指定数据库 mysql -uroot -p -D【–database】 db_name
命令行的操作结束以;或\g来结束
可用help或者\h来找帮助文档
\c 去结束当前命令的执行
常用的关键字需要大写,库名表名字段名使用小写
SQL语句支持折行操作,但不能把完整的单词拆开
数据库名称,表名称,字段名称最好不要使用数据库的保留字,如果非得使用,需要用反引号``将其括起来

**常用SQL语句**
   SELECT USER()得到登录的用户
   SELECT VERSION()得到的版本信息
   SELECT NOW() 得到当前的日期时间
   SELECT DATABASE() 得到当前打开的数据库

数据库的相关操作
创建数据库 CREATE (DATABASE|| SCHEMA) db_name;db_name最好有意义;
检测数据库是否存在,不存在则创建 CREATE (DATABASE|| SCHEMA) IF NOT EXISTS db_name;
创建数据库的同时指定编码方式:CREATE (DATABASE|| SCHEMA) IF NOT EXISTS db_name CHARACTER set [=] 编码方式;
查看上一步操作产生的警告信息 SHOW WARNINGS;
查看指定数据库的详细信息 SHOW CREATE DATABASE db_name;
修改指定数据库 ALTER DATABASE db_name [DEFAULT] CHARACTER SET [=] 编码方式;
查看全部数据库 SHOW DATABASES|| SCHEMAS
打开指定的数据库 USE db_name;
得到当前打开的数据库 SELECT DATABASE()|SCHEMA();
删除数据库 DROP DATABASE db_name;
如果数据库存在则删除,否则放在警告信息中 DROP DATABASE IF EXISTS db_name;
MySQL注释 #注释内容
–注释内容

数据表的相关操作
数据表
是数据库的最重要组成部分之一,数据是保存在数据表中
数据表由行和列组成
每个数据表中至少有一列,行可以有零行或多行组成
表名要求唯一,含义明确,且不得包含特殊字符
创建数据表
CREATE TABLE [IF NOT EXISTS] tbl_name{
字段名称 字段类型 [完整性约束条件]

}ENGINE=存储引擎 CHARASET 编码方式
查看当前数据库下已有数据表 SHOW TABLES;
SHOW [FULL] TABLES [{FROM | IN} db_name]
[LIKE ‘pattern’ | WHERE expr]
查看指定数据表的详细信息 SHOW CREATE TABLE tbl_name;
查看表结构 DESC tbl_name;DESCRIBE tbl_name;SHOW COLUMNS FROM tbl_name;
删除指定的数据表: DROP TABLE if exists tbl_name

完整性约束:
       unsigned:无符号,没有负数从0开始
       zerofill:零填充,长度不够时前补零来填充至指定长度
       NOT NULL:非空约束,插入此字段必须要有值,不能为空值
       DEFAULT:默认值,若插入时无值,则使用默认值
       PRIMARY KEY:主键,标识记录的唯一性
       UNIQUE KEY:唯一性
       AUTO_INCREMENT:自动增长,只能用于数值列,配合索引使用,默认起始值从1开始,每次增长1,后续增长根据当前最大值进行增长
       FOREIGN KEY:外键约束

MYSQL的常见数据类型
数值型
整数型:TINYINT 1字节,SMALLINT 2字节,MEDIUMINT 3字节, INT 4字节,BIGINT 8字节, BOOL,BOOLEAN 1字节,
浮点型: FLOAT[(M,D)]4字节,DOUBLE[(M,D)]8字节 ,DECIMAL[(M,D)] M+2字节, M是数字总位数,D是小数点后位数,若是 MD被省略则根据硬件条件允许来保存值

   字符串类型:CHAR(M),VARCHAR(M),TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT,ENUM('值1','值2'..),SET('值1','值2'..)
    CHAR效率高于VARCHAR,CHAR相当于拿空间换时间,VARCHAR拿时间换空间
	CHAR默认存储数据时,后面会用空格填充到指定长度,而在检索的时候会在去掉后面的空格,
	VARCHAR存储时不用空格进行填充,尾部的空格会留下
	TEXT列不能有默认值,检索的时候不存在大小写转换
	ENUM 会自动过滤掉空格的
	SET 可以一次插入多个值,但是顺序按照初始规定的顺序

日期时间类型 TIME,DATE,DATETIME,TIMESTAMP,YEAR
课中数据表的创建
#创建数据库
CREATE DATABASE IF NOT EXISTS imooc;
#打开imooc
use imooc;
#创建用户表
CREATE TABLE IF NOT EXISTS user(
id INT,
username VARCHAR(20),
password CHAR(32),
email VARCHAR(50),
age TINYINT,
card CHAR(18),
tel CHAR(11),
salary FLOAT(8,2),
married TINYINT(1),
addr VARCHAR(100),
sex ENUM('male','female')
)ENGINE=INNODB; 


#创建用户表
CREATE TABLE IF NOT EXISTS user(
id INT ,
username VARCHAR(20),
password CHAR(32),
email VARCHAR(50),
age TINYINT,
card CHAR(18),
tel CHAR(11),
salary FLOAT(8,2),
married TINYINT(1),
addr VARCHAR(100),
sex ENUM('male','female')
)ENGINE=INNODB; 
 INSERT  user(id,username,password,email,age,card,tel,salary,married,addr,sex)
 VALUES(1,'aaa','aaaaa','[email protected]',34,'346062192849829481','13929494758',666666.22,0,'qwegssffkf','male');
 INSERT  user(id,username,password,email,age,card,tel,salary,married,addr,sex)
 VALUES(-12,'aaa','aaaaa','[email protected]',340,'346062192849829481','13929494758',666666.22,0,'qwegssffkf','male');

CREATE TABLE test_int(
a tinyint,
b smallint,
c mediumint,
d int ,
e bigint 
);
--如果超出数据类型范围会发生截断现象
Insert test_int(a) Values(-128)Insert test_int(a) Values(-129)--测试无符号
CREATE TABLE test_unsigned(
a int,
b int unsigned
);
insert test_unsigned(a,b) values(-12,-12);

#测试零填充
CREATE TABLE test_fill(
a tinyint zerofill,
b smallint zerofill,
c mediumint,
d int ,
e bigint 
);

--测试浮点型
CREATE TABLE test_float(
a FLOAT(6,2),
b DOUBLE(6,2),
c DECIMAL(6,2)

);
INSERT test_float(a,b,c) values(4.123,4.124,5.1256);

CREATE TABLE test_str(
a CHAR(5),
b varchar(5)
);
INSERT test_str(a,b) values('','');
INSERT test_str(a,b) values('qw','asdfasfas');
INSERT test_str(a,b) values('aaaaaaaa','as');
INSERT test_str(a,b) values('asd','asdqferq');
INSERT test_str(a,b) values('asd','asdg');
INSERT test_str(a,b) values('eeqrq','gewd');

CREATE TABLE test_str1(
content TEXT DEFAULT 'aaa');

--测试ENUM
CREATE TABLE test_enum(
sex ENUM('a','b')
);

INSERT test_enum(sex) values('a');
INSERT test_enum(sex) values('c');

INSERT test_enum(sex) values('1');

	   

CREATE TABLE test_set(
a SET('a','b','c','d')
);
INSERT test_set(a) VALUES('a,b');
INSERT test_set(a) VALUES('a');
INSERT test_set(a) VALUES('d,b');

--测试time类型  HH:MM:SS  D HH:MM:SS D表示天数 0~34 2 0:0:0=48:0:0
CREATE TABLE test_time(
a TIME
);
INSERT test_time(a) VALUES('12:22:55');
INSERT test_time(a) VALUES('12:22');
INSERT test_time(a) VALUES('2 12:22:55');
INSERT test_time(a) VALUES('22');
INSERT test_time(a) VALUES('12 22');
INSERT test_time(a) VALUES('22 2 4');
INSERT test_time(a) VALUES('787878');



--测试DATE类型 YYYY-MM-DD YYYYMMDD
CREATE TABLE test_date(
a DATE
);
INSERT test_date(a) VALues('2019-02-04');
INSERT test_date(a) VALues('2097-2-4');
INSERT test_date(a) VALues('2017-02-04');



--YY-MM-DD YYMMDD
--70~99转换为1970-1999 00~69转换为2000~2069
INSERT test_date(a) VALUES('4592');



--测试DATETIME
CREATE TABLE test_datetime(
a DATETIME
);
INSERT test_datetime(a) VALUES('2040-09-2 12:2:23');

--测试TIMESTAMP
CREATE TABLE test_timestamp(
a TIMESTAMP
);
INSERT test_timestamp(a) values('1234-12.2 9:0:2');
--插入CURRENT_TIMESTAMP
INSERT test_timestamp(a) values(CURRENT_TIMESTAMP);
--插入null
INSERT test_timestamp(a) values(null);
--什么也不写,得到当前系统日期和时间
INSERT test_timestamp(a) values();



--测试YEAR
CREATE TABLE test_year(
a YEAR
);
--70~99转换为1970-1999 00~69转换为2000~2069
--0插入的结果是0000
--‘0’插入的结果是2000
INSERT test_year(a) VALUES(1901);
INSERT test_year(a) VALUES(1900);
INSERT test_year(a) VALUES(2155);
INSERT test_year(a) VALUES(2156);


--测试主键
CREATE TABLE test_primary_key(
id int unsigned primary key,
username VARCHAR(20)
);
INSERT test_primary_key(id,username) VALUES(1,'a');
INSERT test_primary_key(username) VALUES('b');
INSERT test_primary_key(id,username) VALUES(1,'b');
INSERT test_primary_key(id,username) VALUES(2,'a');

CREATE TABLE test_primary_key1(
id int unsigned  key,
username VARCHAR(20)
);

CREATE TABLE test_primary_key2(
id int unsigned ,
username VARCHAR(20),
primary key(id)
);


CREATE TABLE test_primary_key3(
id int unsigned ,
courseid int unsigned,
username VARCHAR(20),
primary key(id,courseid)
);
Insert test_primary_key3(id,courseid,username) Values(1,2,'qq');
Insert test_primary_key3(id,courseid,username) Values(1,2,'qaq');
Insert test_primary_key3(id,courseid,username) Values(2,2,'qq');


--测试AUto_INCREMENT
CREATE TABLE test_auto_increment(
id int unsigned  key AUTO_INCREMENT,
username VARCHAR(20)
);


INSERT test_auto_increment(username) VALUES('a');
INSERT test_auto_increment(username) VALUES('b');
INSERT test_auto_increment(username) VALUES('c');
INSERT test_auto_increment(username) VALUES('d');

INSERT test_auto_increment(id,username) VALUES(null,'c');
INSERT test_auto_increment(id,username) VALUES(default,'d');


--测试非空
CREATE TABLE test_not_null(
a varchar(20),
b varchar(20) not null
);
insert test_not_null(a,b) VALUES('','');
insert test_not_null(a,b) VALUES(null,null);
insert test_not_null(a) VALUES('a');
insert test_not_null(a,b) VALUES(null,'aaa');


--测试默认值
CREATE TABLE test_default(
id INT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20) NOT NULL,
age TINYINT UNSIGNED DEFAULT 18,
email VARCHAR(50) NOT NULL DEFAULT'[email protected]'
);
INSERT test_default(username) VALUES('asd');
INSERT test_default(username,age,email) VALUES('asd',null,'@qq');
INSERT test_default(username,age,email) VALUES('d',null,null);
INSERT test_default(username,age,email) VALUES('asd',null,default);

--测试默认值和枚举类型的结合
CREATE TABLE test_default1(
id INT UNSIGNED AUTO_INCREMENT key,
sex enum('a','b') not null default 'a'
);

--测试UNIQUE KEY
CREATE TABLE test_unique(
id INT UNSIGNED AUTO_INCREMENT key,
username VARCHAR(20) NOT NULL UNIQUE KEY,
email VARCHAR(50) UNIQUE,
card CHAR(18) UNIQUE
);

INSERT test_unique(username,email,card) VALUES('a','ASSS','1');
INSERT test_unique(username,email,card) VALUES('a','ASS奥术大师S','12');
INSERT test_unique(username,email,card) VALUES('wa',null,null);

--用户表imooc_user
CREATE TABLE IF NOT EXISTS imooc_user(
id INT UNSIGNED AUTO_INCREMENT KEY comment '用户编号',
username VARCHAR(20) NOT NULL UNIQUE comment '用户名',
password CHAR(32) NOT NULL comment '密码',
email VARCHAR(50) NOT NULL UNIQUE comment '邮箱',
age TINYINT UNSIGNED NOT NULL DEFAULT 18 comment '年龄',
sex ENUM('male','female') NOT NULL DEFAULT 'male' comment '性别',
tel CHAR(11) NOT NULL UNIQUE comment '电话',
addr VARCHAR(50) NOT NULL DEFAULT '北京' comment '地址',
card CHAR(18)  NOT NULL UNIQUE comment '身份证号',
married TINYINT(1) NOT null DEFAULT 0 Comment'0代表未婚,1代表已婚',
salary FLOAT(8,2) NOT NULL DEFAULT 0 COMMENT '薪水'
)ENGINE=INNODB default charset=UTF8; 

最后宣传下我个人的微信公众号,微信搜索:可及的小屋,有志向整副业,娱乐的程序员们,欢迎您的到来。谢谢。
100G程序员资料,自取哦!!
可及的小屋

发布了48 篇原创文章 · 获赞 9 · 访问量 2405

猜你喜欢

转载自blog.csdn.net/jjy19971023/article/details/104322277