初始mysql_初始mysql

数据库操作

查看当前登陆用户:

select user();

登录数据库

mysql -u用户名 -p密码 -h 连接地址

修改当前用用户密码

set password = password('123456');

库操作

创建库

相当于创建了一个文件夹

create database python;

查看库

show databases;

使用库

切换到对应的文件夹

use python

表操作

创建表

create table tablename(字段名 类型(长度),字段名 类型(长度) 约束...)

# 例子

create table score(id int(8),name char(20),num int(4));

修改表

使用

语法:

1. 修改表名

ALTER TABLE 表名

RENAME 新表名;

2. 增加字段

ALTER TABLE 表名

ADD 字段名 数据类型 [完整性约束条件…],

ADD 字段名 数据类型 [完整性约束条件…];

3. 删除字段

ALTER TABLE 表名

DROP 字段名;

4. 修改字段

ALTER TABLE 表名

MODIFY 字段名 数据类型 [完整性约束条件…];

ALTER TABLE 表名

CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];

ALTER TABLE 表名

CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

5.修改字段排列顺序/在增加的时候指定字段位置

ALTER TABLE 表名

ADD 字段名 数据类型 [完整性约束条件…] FIRST;

ALTER TABLE 表名

ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;

ALTER TABLE 表名

CHANGE 字段名 旧字段名 新字段名 新数据类型 [完整性约束条件…] FIRST;

ALTER TABLE 表名

MODIFY 字段名 数据类型 [完整性约束条件…] AFTER 字段名;

alter操作非空和唯一

create table t(id int unique,name char(10) not null);

#去掉null约束

alter table t modify name char(10) null;

# 添加null约束

alter table t modify name char(10) not null;

# 去掉unique约束

alter table t drop index id;

# 添加unique约束

alter table t modify id int unique;

alter处理null和unique约束

alter操作主键

1、首先创建一个数据表table_test:

create table table_test(

`id` varchar(100) NOT NULL,

`name` varchar(100) NOT NULL,

PRIMARY KEY (`name`)

);

2、如果发现主键设置错了,应该是id是主键,但如今表里已经有好多数据了,不能删除表再重建了,仅仅能在这基础上改动表结构。

先删除主键

alter table table_test drop primary key;

然后再增加主键

alter table table_test add primary key(id);

注:在增加主键之前,必须先把反复的id删除掉。

为表添加外键

创建press表

CREATE TABLE `press` (

`id` int(11) NOT NULL,

`name` char(10) DEFAULT NULL,

PRIMARY KEY (`id`)

) ;

创建book表

CREATE TABLE `book` (

`id` int(11) DEFAULT NULL,

`bk_name` char(12) DEFAULT NULL,

`press_id` int(11) NOT NULL,

KEY `press_id` (`press_id`)

) ;

为book表添加外键

alter table book add constraint fk_id foreign key(press_id) references press(id);

删除外键

alter table book drop foreign key fk_id;

alter示例

mysql> desc staff_info;

+-------+-----------------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-----------------------+------+-----+---------+-------+

| id | int(11) | YES | | NULL | |

| name | varchar(50) | YES | | NULL | |

| age | int(3) | YES | | NULL | |

| sex | enum('male','female') | YES | | NULL | |

| phone | bigint(11) | YES | | NULL | |

| job | varchar(11) | YES | | NULL | |

+-------+-----------------------+------+-----+---------+-------+

6 rows in set (0.00 sec)

# 表重命名

mysql> alter table staff_info rename staff;

Query OK, 0 rows affected (0.00 sec)

mysql> desc staff;

+-------+-----------------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-----------------------+------+-----+---------+-------+

| id | int(11) | YES | | NULL | |

| name | varchar(50) | YES | | NULL | |

| age | int(3) | YES | | NULL | |

| sex | enum('male','female') | YES | | NULL | |

| phone | bigint(11) | YES | | NULL | |

| job | varchar(11) | YES | | NULL | |

+-------+-----------------------+------+-----+---------+-------+

6 rows in set (0.00 sec)

# 删除sex列

mysql> alter table staff drop sex;

Query OK, 0 rows affected (0.02 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> desc staff;

+-------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id | int(11) | YES | | NULL | |

| name | varchar(50) | YES | | NULL | |

| age | int(3) | YES | | NULL | |

| phone | bigint(11) | YES | | NULL | |

| job | varchar(11) | YES | | NULL | |

+-------+-------------+------+-----+---------+-------+

5 rows in set (0.01 sec)

# 添加列

mysql> alter table staff add sex enum('male','female');

Query OK, 0 rows affected (0.03 sec)

Records: 0 Duplicates: 0 Warnings: 0

# 修改id的宽度

mysql> alter table staff modify id int(4);

Query OK, 0 rows affected (0.02 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> desc staff;

+-------+-----------------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-----------------------+------+-----+---------+-------+

| id | int(4) | YES | | NULL | |

| name | varchar(50) | YES | | NULL | |

| age | int(3) | YES | | NULL | |

| phone | bigint(11) | YES | | NULL | |

| job | varchar(11) | YES | | NULL | |

| sex | enum('male','female') | YES | | NULL | |

+-------+-----------------------+------+-----+---------+-------+

6 rows in set (0.01 sec)

# 修改name列的字段名

mysql> alter table staff change name sname varchar(20);

Query OK, 4 rows affected (0.03 sec)

Records: 4 Duplicates: 0 Warnings: 0

mysql> desc staff;

+-------+-----------------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-----------------------+------+-----+---------+-------+

| id | int(4) | YES | | NULL | |

| sname | varchar(20) | YES | | NULL | |

| age | int(3) | YES | | NULL | |

| phone | bigint(11) | YES | | NULL | |

| job | varchar(11) | YES | | NULL | |

| sex | enum('male','female') | YES | | NULL | |

+-------+-----------------------+------+-----+---------+-------+

6 rows in set (0.00 sec)

# 修改sex列的位置

mysql> alter table staff modify sex enum('male','female') after sname;

Query OK, 0 rows affected (0.02 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> desc staff;

+-------+-----------------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-----------------------+------+-----+---------+-------+

| id | int(4) | YES | | NULL | |

| sname | varchar(20) | YES | | NULL | |

| sex | enum('male','female') | YES | | NULL | |

| age | int(3) | YES | | NULL | |

| phone | bigint(11) | YES | | NULL | |

| job | varchar(11) | YES | | NULL | |

+-------+-----------------------+------+-----+---------+-------+

6 rows in set (0.00 sec)

# 创建自增id主键

mysql> alter table staff modify id int(4) primary key auto_increment;

Query OK, 4 rows affected (0.02 sec)

Records: 4 Duplicates: 0 Warnings: 0

mysql> desc staff;

+-------+-----------------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-------+-----------------------+------+-----+---------+----------------+

| id | int(4) | NO | PRI | NULL | auto_increment |

| sname | varchar(20) | YES | | NULL | |

| sex | enum('male','female') | YES | | NULL | |

| age | int(3) | YES | | NULL | |

| phone | bigint(11) | YES | | NULL | |

| job | varchar(11) | YES | | NULL | |

+-------+-----------------------+------+-----+---------+----------------+

6 rows in set (0.00 sec)

# 删除主键,可以看到删除一个自增主键会报错

mysql> alter table staff drop primary key;

ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

# 需要先去掉主键的自增约束,然后再删除主键约束

mysql> alter table staff modify id int(11);

Query OK, 4 rows affected (0.02 sec)

Records: 4 Duplicates: 0 Warnings: 0

mysql> desc staff;

+-------+-----------------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-----------------------+------+-----+---------+-------+

| id | int(11) | NO | PRI | 0 | |

| sname | varchar(20) | YES | | NULL | |

| sex | enum('male','female') | YES | | NULL | |

| age | int(3) | YES | | NULL | |

| phone | bigint(11) | YES | | NULL | |

| job | varchar(11) | YES | | NULL | |

+-------+-----------------------+------+-----+---------+-------+

6 rows in set (0.01 sec)

mysql> alter table staff drop primary key;

Query OK, 4 rows affected (0.06 sec)

Records: 4 Duplicates: 0 Warnings: 0

# 添加联合主键

mysql> alter table staff add primary key (sname,age);

Query OK, 0 rows affected (0.02 sec)

Records: 0 Duplicates: 0 Warnings: 0

# 删除主键

mysql> alter table staff drop primary key;

Query OK, 4 rows affected (0.02 sec)

Records: 4 Duplicates: 0 Warnings: 0

# 创建主键id

mysql> alter table staff add primary key (id);

Query OK, 0 rows affected (0.02 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> desc staff;

+-------+-----------------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-----------------------+------+-----+---------+-------+

| id | int(11) | NO | PRI | 0 | |

| sname | varchar(20) | NO | | | |

| sex | enum('male','female') | YES | | NULL | |

| age | int(3) | NO | | 0 | |

| phone | bigint(11) | YES | | NULL | |

| job | varchar(11) | YES | | NULL | |

+-------+-----------------------+------+-----+---------+-------+

6 rows in set (0.00 sec)

# 为主键添加自增属性

mysql> alter table staff modify id int(4) auto_increment;

Query OK, 4 rows affected (0.02 sec)

Records: 4 Duplicates: 0 Warnings: 0

mysql> desc staff;

+-------+-----------------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-------+-----------------------+------+-----+---------+----------------+

| id | int(4) | NO | PRI | NULL | auto_increment |

| sname | varchar(20) | NO | | | |

| sex | enum('male','female') | YES | | NULL | |

| age | int(3) | NO | | 0 | |

| phone | bigint(11) | YES | | NULL | |

| job | varchar(11) | YES | | NULL | |

+-------+-----------------------+------+-----+---------+----------------+

6 rows in set (0.00 sec)

查看表

show tables;

查看表结构

# 查看一些简单的信息,更直观

desc score;

# 详细,可以查看到表名编码,存储引擎等..

show create table score;

删除表

drop table score;

查看数据库的字符集设置

show variables like '%character%';

临时设置字符集(数据库重启既失效)

永久设置需要修改mysql配置文件

# 命令临时修改

set character_set_server='utf8';

数据的增删改查

# 插入一条数据

insert into 表名(字段名) values(值)

insert into score(id,name,num) values(1,'alex',0);

# 插入多条数据

insert into score(id,name,num) values(1,'alex',0),(2,'mhy',0);

delete from 表名 where 条件

# 删除这张表里ID等于2的数据

delete from score where id = 2;

update 表 set 字段名='新的值' where 条件

update score set id = 4 where name = 'mhy';

# 查询表里所有的数据

select * from score;

约束 和 类型

类型

数字类型:

整型(): 长度的约束是无效的,它能够表示的大小只和它存储的字节数相关

类型

大小

范围

用途

tinyint

1bytes

2**8

小整数值(年龄)

smallint

2bytes

2**16

大整数值

miedium

3bytes

2**24

大整数值

int

4bytes

2**32

大整数值(整数)

bigint

8bytes

2**64

极大整数值

示例:

# age3 tinyint unsigned 无符号(-)

create table t1(age1 tinyint(2),age2 tinyint,age3 tinyint unsigned);

d91f8c5fd9dd5c618eed545a4ca4fba7.png

浮点型():薪资

float(m,n) 单精度:

m 表示一共多少位

n 表示小数部分占其中的多少

示例

create table t2(money float(6,2));

insert into t2 values(2222222.33323232);

double 双精度:能够表示的小数点之后的位数更精准(和float使用方法一样)

示例:

create table t4(money double);

insert into t4 values(333.339324234323232);

字符串类型:

char(255):

浪费空间

操作节省时间

例如:用户名\密码\手机号\身份证号

char是定长存储 在存储过程中会将剩余的字节数用空格来替补

char(20) 存储后就是 'mhy '会将剩余没有使用的使用空格来填补

varchar(65535)

存储节省空间

更加浪费时间(慢)

例如:评论\微博\微信朋友圈\论坛

varchar变长存储

'mhy' 存储过后就是 'mhy3'

示例

create table t5(username char(20),password char(32));

时间类型:

datetime

年月日时分秒

例如:登陆时间\修改时间\出生日期

date

年月日

例如:注册时间

time

时分秒

例如:跑步计时

timestamp

时间戳

时间戳4字节:1970-2038-xx-xx

year

示例:

# 创建

create table t6(dt datetime,d date,t time,ts timestamp,y year);

# 查看当前时间

select now();

# 插入当前时间

insert into t6(dt) values(now());

insert into t6(y) values(now());

insert into t6(t) values(now());

# 插入自定义时间

insert into t6(d) values(20190915);

insert into t6(t) values(230909);

# 字符串形式

insert into t6(t) values('23:09:09');

insert into t6(d) values('2019/09/15');

# 更新后timestamp会随着最后的时间进行修改

update t6 set dt='2019-09-14 23:12:12' where d = '2019/09/15';

# 更新

create table t6(dt datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, d date, t time, ts timestamp, y year);

单选和多选 性别 爱好

enum 单选

set 多选 并去重

示例:

create table t8(gender enum('男','女'),hobby set('抽烟','喝酒','烫头','洗脚'));

insert into t8 values('男','抽烟');

insert into t8 values('男','抽烟,烫头,洗脚');

Innodb引擎

mysql 5.6以上版本默认的存储引擎就是innodb引擎。

frm:格式的文件,存储表结构

ibd:存储数据

查看当前数据库的存储引擎

show variables like "default_storage_engine";

查看数据库的支持的存储引擎:

show engines;

33482703d1827f1c5054f9fbeb13500e.png

Innodb引擎:支持事务,行级锁定,外键

事务:

原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。

一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。

隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。

持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。

行级锁定:

当一个用户请求发生了事务,提交成功后,会对某一个用户加锁(行级锁),进行修改,同一时间,其他的人申请修改这个行的数据不能修改,但是其他行的数据不影响。这就是行级锁,但是如果同一时间修改的行过多,行级锁其实效率不高,innodb也支持表锁

外键:

表的外键是另一张表的主键。将两张表联系到一起。

作用:简单的说是为了保证数据的完整性。

严格模式设置:

#临时修改

set sql_mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";

# 配置文件修改

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值