python基础---sql语句
数据库系统:
数据库:⽂件夹
数据表:⽂件
表记录:⼀条数据
sql语句规范
sql是Structured Query Language(结构化查询语⾔)的缩写。SQL是专为数据库⽽建⽴的操作命令集,是⼀种功能齐全的数据库语⾔
<1> 在数据库系统中,SQL语句不区分⼤⼩写(建议⽤⼤写) 。但字符串常量区分⼤⼩写。建议命令⼤写,表名库名⼩写;
<2> SQL语句可单⾏或多⾏书写,以“;”结尾。关键词不能跨多⾏或简写。
<3> ⽤空格和缩进来提⾼语句的可读性。⼦句通常位于独⽴⾏,便于编辑,提⾼可读性。
1 2SELECT * FROM tb_table
WHERE NAME="YUAN";
<4> 注释:
单⾏注释:--
多⾏注释:/*......*/
<5>sql语句可以折⾏操作
1、mysql的常⽤sql语句:
a.库的操作
1.创建数据库:
create database 库名 [character set utf8(指定字符集,不加默认为拉丁⽂)];
2.查看数据库
show databases; 查看所有数据库
insert语句字段顺序show create database 库名; 查看数据库的创建信息
use 库名; 切换到指定数据库
select database(); 查看当前所在的库
3.修改数据库(修改字符集)
alter database 库名 [character set utf8(指定字符集,不加默认为拉丁⽂)];
4.删除数据库
drop database 库名;
b.表的操作
1.创建表
create table 表名 (
字段 类型[完整性约束条件],
字段 类型[完整性约束条件]
);
2.查看表信息
show tables; 查看当前库中所有的表
show create table 表名; 查看表的建表语句
desc 表名; 查看表结构
show columns from 表名; 同上,查看表结构
3.修改表结构
alter table 表名(
add 字段 类型[完整性约束条件] [first|after 字段名], #增加字段
modify 字段 类型[完整性约束条件] [first|after 字段名], #修改字段类型
change 旧字段 新字段 类型[完整性约束条件][first|after 字段名] #修改字段名drop 字段; #删除⼀列字段
);
rename table 旧表名 to 新表名; 修改表名
4.删除表
drop table 表名; 删除表
c.表记录的操作
1.增加表记录
增加⼀条记录:
insert [into] 表名 (字段1,字段2,…) values (值1,值2,…);
增加多条:
insert [into] 表名 (字段1,字段2,…) values (值1,值2,…),
(值1,值2,…),
…… ;
set插⼊:
insert [into] 表名 set 字段1=值2,字段2=值2;
2.修改表记录
update 表名 set 字段1=值1 where⼦句
3.删除表记录
delete from 表名 where ⼦句;
清空表内所有记录有两种⽅法:
⽅式1:
delete from 表名;
⽅式2:
truncate table 表名;
对⽐:
delete语句只能删除表中的内容,不能删除表本⾝,想要删除表,⽤drop
truncate也可以删除表中的所有数据,语句⾸先会摧毁表,再新建表,此种⽅式删除的数据不能在事务中恢复,数据量⼤时推荐使⽤
4.查询表记录
select * from 表名; #显⽰所有的记录信息
select 字段1,字段2,… from 表名
where ⼦句 #过滤查询
group by 字段 #分组查询
having ⼦句 #过滤
order by 字段 #排序
limit #记录条数限制
Mysql在执⾏sql语句时的执⾏顺序:
from > where > select > group by > having > orderby
(1)where ⼦句:
⽐较运算符:
> < >= <=<> !=
between 80 and 100 值在10到20之间
in(80,90,100) 值是10或20或30
like 'yuan%' (%后⾯可以接_,代表匹配⼀个字符,可以接多个)
逻辑运算符
在多个条件直接可以使⽤逻辑运算符 and or not
(2)group by 字段:
GROUP BY 语句根据某个列对结果集进⾏分组,在分组的列上我们可以使⽤聚合函数进⾏相关查询
count 计数
sum 总数值
avg 平均值
max 最⼤值
min 最⼩值
(3)having ⼦句
过滤
与where ⼦句的区别:
在sql语句中,两者的书写顺序和执⾏顺序不⼀样,where写在前⾯,先执⾏,having写在后⾯,后执⾏,having适⽤于对查询结果的⼆次过滤
(4)order by 字段
按指定的列进⾏排序,排序的列即可是表中的列名,也可以是select语句后指定的别名
语法:select*| from tab_name order by field [Asc|Desc]
-- Asc 升序、Desc 降序,其中asc为默认值 ,ORDER BY ⼦句应位于SELECT语句的结尾。
(5)limit记录条数限制
(6)正则表达式
练习:
先创建⼀个员⼯表:
create table emp(
id int primary keyauto_increment,
name varchar(20),
gender enum("male","female","other"),
age tinyint,
dep varchar(20),
city varchar(20),
salary double(7,2)
);
表内插⼊信息:
insert into emp(name,gender,age,dep,city,salary) values ("yuan","male",24,"教学部","河北省",8000),
("egon","male",34,"保安部","⼭东省",8000),
("alex","male",28,"×××部","⼭东省",10000),
("景丽阳","female",22,"教学部","北京",9000),
("张三", "male",24,"教学部","河北省",6000),
("李四", "male",32,"保安部","北京",12000),
("王五", "male",38,"教学部","河北省",7000),
("赵六", "male",19,"保安部","河北省",9000),
("猪七", "female",24,"×××部","北京",9000);
查看表记录信息:
mysql> select * from emp;
+----+--------+--------+------+--------+--------+----------+
| id | name | gender | age | dep | city | salary |
+----+--------+--------+------+--------+--------+----------+
| 1| yuan | male | 24| 教学部 | 河北省 | 8000.00 |
| 2| egon | male | 34| 保安部 | ⼭东省 | 8000.00 | | 3| alex | male | 28| ×××部 | ⼭东省 | 10000.00 | | 4| 景丽阳 | female| 22 | 教学部 | 北京 | 9000.00 |
| 5| 张三 | male | 24 | 教学部 | 河北省 | 6000.00 |
| 6| 李四 | male | 32 | 保安部 | 北京 | 12000.00 |
| 7| 王五 | male | 38 | 教学部 | 河北省 | 7000.00 |
| 8| 赵六 | male | 19 | 保安部 | 河北省 | 9000.00 |
| 9| 猪七 | female | 24 | ×××部 | 北京 | 9000.00 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论