|

点击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号”, `" T; A3 e% u, p% {
干货福利,第一时间送达!2 _9 @$ T: C* e
# J9 L, e/ ~9 J0 g$ p. h
u5bam05hm1364021817224.png
~ Y) M" J6 I
最近有小伙伴说没有收到当天的文章推送,这是因为微信改了推送机制,有一部分小伙伴刷不到当天的文章,一些比较实用的知识和信息,错过了就是错过了,建议大家加个星标??,就能第一时间收到推送。
! }. [% ^( n# f; E: G/ B; W* U# j
ewngx2akvah64021817324.png
7 m& c/ y( @5 J! k( J
小伙伴们大家好,我是飞宇。
) E% ?! {6 j) c8 m! |! i4 ~2 Q4 N今天来分享一下SQL常见知识点总结,全文一共一万五千字,建议收藏起来!+ @+ O: \0 B! w
0 u" l, U# U( U第一章 SQL的介绍; o/ @1 l% p6 y4 ]7 S6 z0 Y. _- ^
1.1、什么是sqlSQL:Structure Query Language。(结构化查询语言),通过sql操作数据库(操作数据库,操作表,操作数据)SQL被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后来被国际化标准组织(ISO)采纳为关系数据库语言的国际标准各数据库厂商(MySql,oracle,sql server)都支持ISO的SQL标准。各数据库厂商在标准的基础上做了自己的扩展。各个数据库自己特定的语法1.2、sql的分类Data Definition Language (DDL数据定义语言) 如:操作数据库,操作表Data Manipulation Language(DML数据操纵语言),如:对表中的记录操作增删改Data Query Language(DQL 数据查询语言),如:对表中数据的查询操作Data Control Language(DCL 数据控制语言),如:对用户权限的设置1.3、MySQL的语法规范和要求(1)mysql的sql语法不区分大小写
: S( b# r3 M" q. U, C/ Y$ s; R. B2 X0 UMySQL的关键字和函数名等不区分大小写,但是对于数据值是否区分大小写,和字符集与校对规则有关。; |( U# p0 Q4 V4 |0 s5 w0 o, j' l
ci(大小写不敏感),cs(大小写敏感),_bin(二元,即比较是基于字符编码的值而与language无关,区分大小写)
' G: z( b: {4 M, g4 D, {(2)命名时:尽量使用26个英文字母大小写,数字0-9,下划线,不要使用其他符号user_id: A# `5 R/ Y2 n- {! b
(3)建议不要使用mysql的关键字等来作为表名、字段名等,如果不小心使用,请在SQL语句中使用`(飘号)引起来# V* k+ H# }1 o7 q# W3 Z
(4)数据库和表名、字段名等对象名中间不要包含空格
" k8 [% K j2 q+ Q+ E(5)同一个mysql软件中,数据库不能同名,同一个库中,表不能重名,同一个表中,字段不能重名6 q) W0 G9 H4 _9 o$ }# m% w9 f; `
(6)标点符号:+ M/ ]( o. R1 y+ V5 H
必须成对必须英文状态下半角输入方式字符串和日期类型可以使用单引号’’列的别名可以使用双引号"",给表名取别名不要使用双引号。取别名时as可以省略如果列的别名没有包含空格,可以省略双引号,如果有空格双引号不能省略。(7)SQL脚本中如何加注释6 e: [! o% L ^6 S
单行注释:#注释内容单行注释:–空格注释内容 其中–后面的空格必须有多行注释:/* 注释内容 */#以下两句是一样的,不区分大小写% ~$ @7 ^1 |2 p6 c2 l8 s
show databases;
; m2 A; H0 K1 N2 D7 l, M5 H$ l5 oSHOW DATABASES;. }) U" P: E8 r' \' p9 l P; b
#创建表格' F! |6 }0 `; C
#create table student info(...); #表名错误,因为表名有空格
9 P9 x) e! b# ^' I& dcreate table student_info(...); " o' w! `9 Z5 J2 y- r
#其中name使用``飘号,因为name和系统关键字或系统函数名等预定义标识符重名了。
# ~1 Y4 f5 E4 X3 L7 d- u& O; yCREATE TABLE t_stu(- l% `: q1 H& k. ? z; a8 t' b
id INT, p! w2 N! a* ^( X
`name` VARCHAR(20)4 J8 @7 K0 k6 g9 R
);; {. J. c4 S& ~% ^, b/ O: ]# e
select id as "编号", `name` as "姓名" from t_stu; #起别名时,as都可以省略
- }* F& ?3 N& y+ A- d% Vselect id as 编号, `name` as 姓名 from t_stu; #如果字段别名中没有空格,那么可以省略""' Y6 E8 Q4 d8 j% I: C
select id as 编 号, `name` as 姓 名 from t_stu; #错误,如果字段别名中有空格,那么不能省略""5 Z; [+ M0 Q7 W- A0 p: _% I
第二章-DDL操作数据库2.1、创建数据库(掌握)语法create database 数据库名 [character set 字符集][collate 校对规则] 注: []意思是可选的意思
: t- E5 e0 B' s7 @7 T字符集(charset):是一套符号和编码。
$ ]: ]8 E/ [: K0 g3 `* E/ g练习创建一个day01的数据库(默认字符集)
# E/ Q4 x; z9 B6 u) O% S. screate database day01;
1 [) Z. g( t0 \2 g8 n7 C创建一个day01_2的数据库,指定字符集为gbk(了解)1 G6 E5 [" b( m' Q1 _. N
create database day01_2 character set gbk;
* f. t3 @) s; L: v% h0 o2.2、查看所有的数据库查看所有的数据库语法
1 b \" | V( \7 t( U2 Gshow databases; # G" ?% ?) _. f) t2 H2 n: N1 [8 K( B
查看数据库的定义结构【了解】语法$ j; M }7 T- M0 \9 U7 S7 a1 ?/ M
show create database 数据库名;
# h$ ^6 i Y$ @' K3 a' C查看day01这个数据库的定义
+ r; ^8 `9 m/ g. l- S% |show create database day01; ' \" w; \6 n" }* M3 M
2.3、删除数据库语法4 B9 i$ S1 g) F$ m$ k' z
drop database 数据库名;
1 z3 z |6 f1 H) ]5 n删除day01_2数据库
9 k4 [, d: P/ a2 jdrop database day01_2;* V' A& W/ q5 u% s4 g$ n: |
2.4、修改数据库【了解】语法
2 u7 _1 J7 ~, {; Z) S- Malter database 数据库名 character set 字符集;0 u7 R: `9 f) O# z3 w
修改day01这个数据库的字符集(gbk)' b" G7 ~! C: G% Q1 c3 t
alter database day01 character set gbk;
" _3 \: u+ h( i注意:
% e4 U9 p) K; Y2 s# `是utf8,不是utf-8不是修改数据库名2.5、其他操作切换数据库, 选定哪一个数据库9 V- u5 o1 R+ Q8 b( W
use 数据库名; //注意: 在创建表之前一定要指定数据库. use 数据库名
2 L5 P' \7 V& g8 y6 U q练习: 使用day01
9 O8 i$ L) {' z1 f$ Luse day01;5 |' b5 G$ l/ R$ A
查看正在使用的数据库2 y9 z p- I9 S5 \6 U8 m$ c
select database();
1 f5 u" p9 |4 _' l3 p第三章-DDL操作表3.1、创建表语法create table 表名(
7 w9 k7 ?4 J: u4 W5 V; ` 列名 类型 [约束],9 H0 j, ?7 c( L4 l# Q: A
列名 类型 [约束]6 K* d3 W9 N6 U3 V8 O& v! E5 S
...
! v6 c" Z: b% ~ : |, f0 h7 u1 c1 @+ H
);& z& B) Q9 b& G+ x2 D
类型数值类型
) o3 H: c9 S; x! D整型系列:xxxInt
0 Q, Q1 N9 [' j h7 Y/ tint(M),必须和unsigned zerofill一起使用才有意义 |
|