mysql笔记
语法特点:可连续使用多个关键字,以空格分开即可,以;结尾
2 0.注意事项
3 \s 返回详细信息
4 每句完成后加分号;
5 帮助的使用 ?+关键字
6 ? contents
7 ? 命令/函数/语言结构
8 不区分大小写
9
10 csv导入
11 create table table_name(...)
12 load data local infile 'lujing' into table table_name fields terminated by',' lines terminated by '\n';
13 csv导出
14 select * from into outfile '/var/lib/mysql-files/...' fields terminated by ',' lines terminated by '\n';
15 1.开启与关闭
16 service mysql start/stop
17 mysql -u root -p
18 quit/exit
19 2.创建/查看/删除库
20 create database name;
21 show databases;
22 drop database database_name;
23 or drop database if exists database_name;
24
25 3.在库中创建/查看/查看结构/删除表
26 create table database_name.table_name(属性1 数据类型,属性2...);
27 show tables;
28 desc table_name;
29 drop table if exists table_name;
30
31 4.选择默认库
32 use database_name;
33 此时创建表即可免去 database_name.
34
35 5.数据增/删/改/查
36 全部字段插入
37 insert into table_name values<>(注:按表结构的顺序写)
38 eg. insert into table1 values<'2','zhangsan',...>;
39 局部选择插入
40 eg. insert into table1<id,name> values<'1','zhangsan'>;
41 查找数据
42 select * from table_name; select distinct ...(可去除重复)
43 修改数据
44 update table_name set 属性1=‘’,属性2=‘’ where 筛选条件;
45 删除数据
46 delect from table_name where 筛选条件;
47 删除所有数据
48 truncate table_name;
49
50
51
52 详细说明
53 0.符号说明
54 []是可选项
55
56 1.创建表(二维)
57 creta table [if not exists] 表名称(
58 字段名1 列数据类型 [属性][索引]
59 ...
60 字段名n 列数据类型 [属性][索引]
61 )[表类型][表字符集][表属性];
62
63 2.数据类型
64 1. 数值型 整型
65 tynyint 非常小 1字节 -128--127 0--255
66 smallint 比较小 2字节 -32768--32767
67 mediumint 中等大小 3字节 -2147483648--2147483647
68 int 标准整型 4字节
69 bigint 大整型 8字节
70 浮点型
71 float(总位数,保留位数) 4字节
72 double(总位数,保留位数) 8字节
73 定点数
74 decimal(总位数,保留位数) 总位数+2
77 2. 字符型
78 "" '' 最大长度255,可通过m变长短内容
80 char(m) 255 固定长度
81 varchar(m) 255 可变长度
82
83 char(4) varchar(4)
84 '' 4字节 '' 1字节
85 'ab' 4字节 'ab' 3字节
86 'abcd' 4字节 'abcd' 5字节
87 'abcdef' 4字节(截断 'abcdef' 5字节
88
89 char 费内存,但速度快 用了长度基本固定 如性别
90 varchar 省内存,速度慢 用于长度变化大的时候 如文章标题
91
92 长内容(文章)
93 text 文本数据
94 MEDIUMTEXT
95 blob 二进制数据(相片)
96 MEDIUMBLOB
97 LONGBLOB
98
99 3. 日期型
100 date YYYY-MM-DD YYYYMMDD
101 time hh:mm:ss hhmmss
102 datatime YYYY-MM-DD hh:mm:ss
103 timestamp YYYYMMDDhhmmss
104 year YYYY
105
106 注:以上通常不用, 通常用整数保存时间,方便运算。
107 time();
108 int
109
110 3.数据字段属性
111 1.unsigned 无符号,用于增加空间
112
113 2.zerofill 前导0,用0补充(无符号)
114
115 3.auto_increment 自动增长
116 当置空时从最大值开始自动+1
117 4.null / not null
118 create table tb1<id int not null,name varchar<30> not null>;
119 传入空值时警告
120
121 5.default 缺省值
122 create table tb1<id int not null default 0,name varchar<30> not null>; null 设置为0
123
124 6.primary key 主键,唯一识别
125 CREATE TABLE users<
126 id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
127 name VARCHAR<30> NOT NULL DEFAULT '',
128 height DOUBLE<10,2> NOT NULL DEFAULT 0.00,
129 age INT NOT NULL DEFAULT 0,
130 sex CHAR<4> NOT NULL DEFAULT '男'
131
132 >;
133
134 4.创建索引
135 1.主键索引 primary key
136 用于确定数据库表里一条特定数据记录的位置
137 一个表只能又一个主键,主键值不能为空
138
139 2.唯一索引 unique
140 避免数据重复,一个表可以有多个唯一索引
141
142 3.常规索引 (层次索引)
143
144 可提升数据库的性能
145 提高了查找的速度,但减慢了插入/删除/修改的速度
148 4.全文索引
149
150 5.数据表类型
151 有12种
152 一个数据库可以有多个不同的表类型
153 默认MyISAM表类型 强调快速读取操作
154 optimize table table_name
155 create table () type/engine InnoDB;
156
157 InnoDB表类型 空间占用量大,读写操作速度慢
158
159 功能 MyISAM InnoDB
160 事务处理 不支持 支持
161 数据行锁定 不支持 支持
162 外键约束 不支持 支持
163 表空间占用 小 大
164 全文索引 支持 不支持
165
166 6.MySQL默认字符集
167 show character set 查看支持的字符集
168 gb2312-80(gb国标) 双字节 6000+个字+600符号
169 gb13000
170 gbk gb2312-80扩展
171 ACSII
172 ISO-8859-1
173
174 UTF-32
175 USC-2
176 UTF-16
177 UTF-8 1-4字节
178 一个汉字 GBK 2字节 UTF8 3字节
179 根据需求选择字符集
180
181 7.修改表结构 alter table
182 ? alter table
183 增加属性 add
184 alter table t1 add 属性 类型 after 属性/first;
185 修改类型 modify
186 alter table t1 modify sex char<3>;
187 修改属性 change
188 alter table t1 change name(原属性名) username(修改名) varchar<30>; alter table rename as users;
189
190
191 8.SQL语言设计
192 1.数据定义语言(DDL)
193 create/drop/alter
194
195 2.数据操作语言(DML)
196 insert/update/delete
197 insert into 表名([字段]) valuse(值)
198 update 表名 set 字段='值' [条件]
199 delect from 表名 [条件]
200 条件 where...
201 分次插入用update
202
203 3.数据查询语言(DQL)
204 支持数学运算/逻辑运算/比较运算
205 +-*/ && || ! = != > in ...
206 <=>等号功能一样,且多能判断空值
207 is null,between...and
208 模糊查找 like,not like _任意一个字符
209 %0个或多个字符
210 正则查询 regexp,rlike
211 select
212 select [all|distinct] {*/table.*/...}
213 默认 all
214 distinct 过滤重复
215 from 表名
216
217 where 条件
218
219 group by 分组
220 select cid,sum(price) from table group by cid;
221 对cid进行统计
222
223 having 分组后的条件
224 select cid,sum(price) from table group by cid
225 having sum(price)>500;
226
227 order by 排序
228 order by 属性1,属性2,... [asc]/[desc] 正序/倒序
229
230 limit
231 limit n1,n2 限制显示的条数,从第(n1-1)条开始,共显示n2条数据
232 多表查询
233 select 表名.属性,表名.属性 from table1,table2.
234 select c.name cname,a.name name from table1 a,
235 table2,c
236 嵌套查询 select * from table1 where id in(select id
237 from...);
238
239 统计函数 count()
240 sum()
241 avg()
242 max()
243 min()
244 4.数据控制语言(DCL)
245
246 9.内置函数
247 用在select以及子句 where, order by ,having,update,delete
248 可将属性当作变量,进行全体运算
249 1.字符串函数
250 concat(s1,s2,...) 将传入的参数连接成字符串
251 insert(s1,x,y,s2) 将s1中的从第x位开始 +y位 替换成上s2
252 lower(str) upper(str) 将字符串转成小写/大写
253 left(str,x) right(str,x) 返回最左/右 x个字符
254 lpad/rpad(str,n,pad),在str的左/右补充pad至n个字符
255 trim/ltrim/rtrim(s) 除去两边/左边/右边空格
256 replace(str,a,b) 用b替换str中的a
257 strcmp(s1,s2) 根据ASCII比较字符串大小 <-1 =0 >1
258 substring(str,x,y) 返回str中从x位起y个字符串
259
260 2.数值函数
261 abs(x) 绝对值
262 ceil(x) 返回大于x的最小整数 进一
263 floor(x)返回小于x的最大整数 退一
264 mod(x,y)求余
265 rand() 0,1的随机
266 round(x,y) x的四舍五入 保留y位小数
267 truncate(x,y) x截断为y位小数
268
269 3.日期函数
270 select curdate(); 当前日期
271 select curtime(); 当前时间
272 select now(); 当前日期加时间
273 unix_timestamp 19710101 00:00:00到现在的秒数
274 计算机元年
275 select from_unixtime(时间戳) 时间戳对应的时刻
276
277 date_format 自定义时间格式
278
279 4.流程控制函数
280 if(条件语句,t f) 真 返回t 假返回f
281 select if(salary>3000,'hight','low');
282
283 ifnull(value1,value2);空返回value2,非空value1
284
285 case when [条件] then [result1] else [result2] end;
286 条件真返回result1 否则返回result2
287
288 5.其它函数
289 database() 返回当前数据库名
290 user() 用户
291 inet_aton(ip) 数字ip地址
292 inet_ntoa() 逆操作
293 password MySQL密码加密
294 md5() 密码加密