mysql数据库
1.数据库分类
2.mysql的使用
mysql -u root -p 默认端口3306
3.sql(structured query language)
4.DDL
查看数据库 show databases;
删除数据库 drop database dbname;
创建数据库 create database dbname;
使用数据库 use dbname
修改数据库 alter database dbname default character set gbk;
字符校对集
数据类型
创建表 create table tname(field1 datatype,field2 datatype,…);
查看表结构 show create table tname; 或 desc tname;
修改表结构
1.添加列(字段) alter table tname add field datatype;
2.对字段名进行修改 alter table tname change field1 field datatype;
3.对字段名的类型进行修改 alter table tname modify field datatype;
4.删除一个字段 alter table tname drop field;
删除表结构 drop table tname;
5.DML(data manipulation language)
表中插入数据
1.对指定列添加 insert into tname(field1,field2,…) values(field1value,field2value,…);
2.对所有列添加 insert into tname values(field1value,field2value,…);
3.对指定列添加多行数据 insert into tname(field1,field2,…) values(field1value,field2value,…),(field1value,field2value,…),…;
4.对所有列添加多行数据 insert into tname values(field1value,field2value,…),(field1value,field2value,…),…;
修改数据 update tname set field1=xxx [where …]
带where子句的只作用于相应行;不带where子句,作用于所有行
复制表
1.复制表结构(不复制数据)create table newtname like oldtname;
2.复制表结构和数据 create table newtname select * from oldtname;
删除表中数据 delete from tname [where condition]
6.DQL(data quiry language)
查询命令 select [*]|{field1,field2,…} from tname [where condition] [order by field];
去除重复数据 select distinct field1 from tname;
select表达式
select语句中出现的列不一定存在数据表中
select database();获取当前使用数据库
where子句
比较运算符 > < 范围查找 between … and …
枚举查询in 常在子查询中出现
模糊查询
对查询结果集进行排序
分页查询 limit
数据完整性(三种)
1.实体完整性:
表中的每一行数据都是唯一的,不能出现重复的。通过主键来实现 PRIMARY KEY
自动增长auto_increment主键自动增长,不需要手动添加
删除主键约束(2步)一般情况下,一张表只有一个主键
联合主键
对于某一张表,一条的记录的唯一性由两个或者以上的字段共同决定。
如果由2个字段决定的,只要其中之一不相同,就是一条不同的记录。
只有当两个字段都相同时,该记录不能插入到表中。
2.数据完整性(域完整性)field 字段 列
每一列必须符合某种特定的数据类型或约束
非空约束 not null 字段不能为空
唯一约束 unique 给字段不允许重复,允许为空
删除唯一约束 alter table tname drop INDEX name;(先获取唯一约束的name再drop)
3.参照完整性
外键约束 foreign key,外键是另一张表的主键
删除外键,先查找外键名字,然后直接删除
7.数据库备份和恢复
8.DQL复杂查询
连接查询 涉及到多张表
1.交叉连接(笛卡尔积)
2.内连接 关键字inner join
3.外连接
左外连接 left join 当右表中没有与之对应的记录时,查询出的右表中的数据全部用NULL代替,左表中的所有数据都出现
右外连接 right join 当左表中没有与之对应的记录时,查询出的左表中的数据全部用NULL代替,右表中的所有数据都出现
子查询
子查询也叫嵌套查询,是指在where子句或from子句中又嵌入select查询语句(一般写在where子句)
联合查询
联合查询能够合并两条查询语句的查询结果,去掉其中的重复数据行,然后返回没有重复数据行的查询结果。联合查询使用union关键字
报表查询
group by进行分组
当分组之后,还需要对记录进行过滤,只能使用having子句不能使用where子句; where子句在没有分组之前使用
9.统计函数
10.c语言的api
建立连接并进行查询
获取查询结果
释放结果集和关闭连接
测试代码