冀小白吧 关注:0贴子:8
  • 2回复贴,共1

数据库第二天

只看楼主收藏回复

1.建库建表
create database 库名 default charset=utf8
create table 表名(
字段名 类型 【约束】,
字段名 类型 【约束】
) default charset=utf8
2.表结构的操作
添加字段
alter table 表名 add 字段名 类型 【约束】
在userinfo表中添加name字段 并且类型为字符串
alter table userinfo add name varchar(10);
在userinfo表的最前面添加一个字段aa 类型为int
alter table userinfo add aa int(10) first;
在userinfo表的phone字段后添加一个bb字段 类型int
alter table userinfo add bb int(10) after phone;
修改字段
change\modify
字段类型 字段名
modify 只能修改字段类型
修改userinfo表的aa字段类型为字符串
alter table userinfo modify aa varchar(10);
userinfo表bb字段已经有了数值类型的值 将他的类型改为字符串类型
alter table userinfo modify bb varchar(10);
aa字段为字符串类型 并且有值为‘88’ 将他转成int类型
alter table userinfo modify aa int(10);
bb字段为字符串类型 并且有值为‘玲玲’ 将他转成int类型 会报错
alter table userinfo modify bb int(10);
注意:将数值类型转成字符串类型没问题
将字符串类型转成数值类型,要考虑数据中有没有非数值类型的内容 如果有不能修改
如果都是数值类型的字符串 可以转
change 不仅能修改字段类型还能修改字段名
将bb字段名修改成len
alter table userinfo change bb len char(30);
在修改字段时 必须要写字段类型 不写会报错
alter table userinfo change len bb; 报错
使用change 只修改字段类型 不修改字段名
alter table userinfo change aa aa char(30);
注意:
使用chage 修改字段信息的时候,不修改字段名 字段名要写两遍
删除字段
删除aa字段
alter table userinfo drop aa;
修改表名:
将表userinfo的表名修改成 users
alter table userinfo rename as users;
修改自增值:
alter table 表名 auto_increment = 数字
只能向后改 不能向当前自增值前面改
表引擎:
innodb
支持事务
事务:将一组操作当做一个执行单元,这一组就是一个事务
这一组sql只有一个执行失败,全部撤销
要么都成功要么都失败
你的银行表
从你的表里扣除500
中间断电了
我银行表
在我的表里添加500
将数据存到一个文件 字段信息 索引信息 数据
效率问题
innodb 的效率低于myisam
myisam
不支持事务
数据不安全
将数据存在三个文件
当前表的自增值为3 删除一条数据之后 突然断电 启动后问 在插入一条数据 当前数据的自增值是几
innodb 重启服务之后自增至会重新计算
myisam 重启之后自增至不会重新计算
索引操作:
主见索引 primary key 不能为空切唯一
唯一索引 unique 具有唯一性 但是可以为空
普通索引 index
全文索引 不支持中文
添加索引
给name添加唯一索引
alter table users add unique u_name(name);
给phone添加唯一索引 唯一索具有唯一性 如果有重复的数据 就添加不上了
alter table users add unique u_phone(phone);
给email 添加普通索引 普通可以为空 可以重复
alter table users add index i_email(email);
删除索引
alter table users drop index 索引名
删除索引时 不管是唯一索引 还是普通索引 都是用index
删除主建索引:(了解测试)
先删除主键索引的自增属性
在删除主键索引
3.数据的添加
一次只添加一条数据
指定所有字段添加
insert into 表名(有几个字段写几个字段) values(写了几个字段给几个值)
指定部分字符段添加
insert into 表名(部分字段) values(部分值)
不指定字段添加
insert into 表名 values(所有的值)
一次添加多条数据
指定所有字段添加
insert into 表名(所有字段) values(所有的值),(所有的值)
指定部分字符段添加
不指定字段添加
4.修改数据
不添加where条件 所有数据都更新
更新id为2,3,4的数据邮箱
update users set email = 'new@qq.com' where id = 2 or id = 3 or id = 4;
update users set email = 'new2@qq.com' where id in (2,3,4);
更新 name='波波' 并且 len = '123' 的数据,将phone更改为138
update users set phone = '138' where name='波波' and len='123';
更新id的值大于3的数据,将phone 改成10086
update users set phone = '10086' where id > 3;
5.删除数据
delete from 表名 where 条件
删除len=12的数据
delete from users where len='12';
-- 删除表中id值为4到10的数据 不包括4 和10
delete from users where id > 4 and id < 10;
6.数据的查询
select * from 表名 where 条件
查询所有字段信息
select * from 表名 where 条件
只查询指定字段的数据 id 和 name
select id,name from users;
where 条件查询
查询py1的所有人员信息
select * from stu where class='py1';
查询py1 sex为0的 人员信息
select * from stu where class = 'py1' and sex = 0;
查询py1 或者py2 中的 sex=1 的数据
select * from stu where (class = 'py1' or class='py2') and sex=1;
查询年龄在 18-25 之间的所有人员信息
select * from stu where age between 18 and 25;
查询年龄在 18-25 之间的py2所有人员信息
select * from stu where age between 18 and 25 and class='py2';
查询年龄分别为 18 28 30 的人员信息(自己写,两种方式)
LIKE 子句查询 也叫模糊查询
%: 代表任意位的任意字符
_:一位任意字符
在实际开发中不建议将%,_ 写到第一位,写到第一位会造成索引使用不上
查询 姓名中带龙的 人员信息
select * from stu where name like '%龙%';
查询 姓名以郭开头的 人员信息
select * from stu where name like '郭%';
查询名字是两个字 人员信息
select * from stu where name like '__';
正则字符:
^: 带表以指定字符开头
$: 以指定字符结尾
姓郭的人员信息
select * from stu where name regexp '^郭';
姓名中以数字4结尾的 人员信息
select * from stu where name regexp '4$';
聚合函数:
最大值 最小值 求和 平均值 统计
安装 pymysql
pip install pymysql


IP属地:北京1楼2019-04-08 10:39回复
    人工自顶


    IP属地:北京2楼2019-04-08 10:43
    回复
      人工自顶


      IP属地:北京3楼2019-04-12 11:05
      回复