一、SQL
在数据库中进行操作的脚本,称为sql,结构化查询语言,当前关系型数据库都支持使用sql语言进行操作,也就是说可以通过 sql 操作 oracle,sql server,mysql,sqlite 等等所有的关系型的数据库。
sql语句主要分为:
1 DQL:数据查询语言,用于对数据进行查询,如 select
2 DML:数据操作语言,对数据进行增、删、查、改,如 insert 、update 、delete
3 TPL:事物处理语言,对事物进行处理,包括 begin transaction 、commit 、rollback
4 DCL:数据控制语言,进行授权与权限回收,如 grant 、revoke
5 DDL:数据定义语言,进行数据库、表的管理,如 creat 、drop
6 CCL:指针控制语言,通过控制指针完成表的操作,如 declare cursor
对于web程序员来说,重点是数据的增删查改,必须熟练掌握DQL 、DEM 、DDL
SQL是一门特殊的语言,专门用来操作关系数据库,且不区分大小写
二、mysql 对数据库的相关操作
1、mysql -u root -p 进入mysql操作界面
mysql -h 192.168.126.128 -u root -p 访问该主机地址的mysql
2、查看数据库: show databases;
2、创建数据库: create database 数据库 charset=utf8; ( 默认使用拉丁文字符串,不重置的话使用中文会报错)
3、查看创建出来的数据库: show create database 数据库;
4、删除数据库: drop database 数据库;
5、选择数据库: use 数据库;
6、查看正在使用的数据库: select database( );
7、查看默认存储引擎: show variables like"%storage_engine%";
8、查看 mysql 数据库系统支持的储存引擎的类型
9、强调说明
数据库中,名字中带有中横线的,会当成特殊意义,需要使用 ` ` 将其括起来 ( Esc键下面, Tab键上面)
三、mysql 对数据库表的相关操作
1、创建数据库表: create table 表名( 字段1 约束 ,字段2 约束 . . . . . );
① 表名不能为 sql 语言的关键字,一个表中可以有多个字段,定义时,字母大小写均可,各字段之间使用逗号分隔开,最后一个字段后不需要加逗号,字段后面可以加上完整性约束条件
②完整性约束条件:完整性约束条件是对字段进行限制,要求用户对该属性进行的操作符合特定的要求,如果不满足完整性约束条件,数据库系统将不执行用户的操作,其目的是为了保证数据库中数据的完整性
主键 primary key:物理上存储的顺序
非空 not null:此字段不允许填写空值
唯一 unique:此字段的值不允许重复
默认 default:当不填写值时,会使用默认着,填写时,以填写内容为准
外键 foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常(虽然外键约束可以保证数据的有效性,但是在进行数据的增加、修改、删除、查询时,都会降低数据库的性能,所以不推荐使用,那么如何保证数据的有效性呢:在逻辑层进行控制)
auto_increment :标识该属性的值自动增加
③常用数据类型:
2、查看当前数据库中的数据库表: show tables;
3、修改表名: alter table 原表名 rename 新表名; 或 alter table 原表名 rename to 新表名;
4、删除没有被关联的普通数据表: drop table 表名;
5、查看数据表的基本结构 (字段):decs(describe) 表名; 或 show create table 表名; 或 show create table 表名 \G
6、查看表的所有字段数据信息: select * from 表名;
图上,表示当前表的字段中没有任何数据
7、向表中添加新字段:
①向表的末尾添加字段: alter table 表名 add 字段名 数据类型 约束;
②向表的首位添加字段: alter table 表名 add 字段名 数据类型 约束 first;
③向表的指定位置添加字段: alter table 表名 add 字段名 数据类型 约束 after 某一个已存在的字段名;
④一次性添加多个字段:alter table 表名 add (字段名1 数据类型1 约束1,字段名2 数据类型2 约束2 ......)
8、删除字段: alter table 表名 drop 字段名;
9、修改字段
①修改字段(不重命名): alter table 表名 modify 字段名 数据类型 约束 ;
②修改字段并移到首位 : alter table 表名 modify 字段名 数据类型 约束 first ;
③修改字段并移到指定位置: alter table 表名 modify 字段名 数据类型 约束 after 某个已存在的字段名;
③修改字段(重命名) : alter table 表名 change 原字段名 新字段名 数据类型 约束 ;
10、向表中插入数据
表的字段如下: 其中 sex 字段为枚举类型
①全列插入数据: insert into 表名 values( 数据内容1 ),(数据内容2)...... ;
插入数据时,数据的类型需要与对应字段的数据类型一致,字符串需要加上引号,
可以使用 0 、null 、default 三种方法,为主键以及自动增加的 id 字段的值进行占位(不占位的话不符合格式要求,会报错)
当字段为枚举类型时,也可以这样插入内容:
②部分插入数据: insert into 表名( 字段1,字段2,字段3 ......) values( 值1,值2,值3 ),values( 值1 ',值2 ',值3 ' ) ......
没有赋值的字段,数据库系统会为其插入默认值,如果某个字段没有设置默认值,而且是非空属性,那么就必须为其赋值,否则会报错,通过这种方式也可以随意的设置字段的内容,不一定非要按照定义时的字段顺序,一 一对应的为其赋值
11、更改数据内容: update 列表名 set 字段=值 where 条件;(如果不加上条件,默认全部修改)
12、删除数据 ( 物理删除 ): delete from 表名 where 条件;(删除时需要小心,不加上条件,默认全部删除)
13、逻辑删除:向表中添加 is_delete 字段,数据类型为 bit ,默认值为 0 ,当默认值修改为1时,表示逻辑删除,可恢复
四、mysql 数据查询
1、基础查询:
①select * from 列表名; 查询列表的全部数据内容
select 列表名.* from 列表名; 查询列表的全部数据内容
select 数据库名.列表名.* from 列表名; 查询列表的全部数据内容
②查询列表的字段1和字段2数据内容
select 列表名.字段1,,列表名.字段2 from 列表名;
③ 去重查询(去重时只看一个字段条件)
select distinct 字段1,字段2 from 列表名;
④条件查询 (比较运算符,逻辑运算符)
select * from 列表名 where 条件;
⑤模糊查询(kile %表示任意字符, _表示一位字符)
select * from 列表名 where 模糊条件;
⑥范围查询 in表示非连续范围, between ... and ... 表示连续范围
select * from 列表名 where 字段 in (范围) ;
⑦null 查询,使用 is 或 is not 来进行判断,这里需要注意的是 null 与 " " 并不相等
select * from 列表名 where 字段 is null ; 查询某个字段为 null 的信息
select * from 列表名 where 字段 is not null ; 查询某个字段不为 null 的信息
⑧排序查询 order by ( asc 升序,desc 降序)
select * from 列表名 order by height desc; 按照身高,降序查询所有信息
select * from 列表名 order by height desc,age desc; 先按照身高,降序查询所有信息,若身高相同,再按照年龄降序查询
⑨聚合函数
⑴ count ( * ) 查询总数量
select count( * ) from 表名;
⑵ min(字段) 求此字段的最小值 , max(字段) 求此字段的最大值