mysql数据库

关系型数据库
1.如何登录数据库?
mysql -uroot -ppassword root(用户名)password(密码)

  1. 如何查询数据库服务器中所有的数据库?
    MariaDB [(none)]> show databases;
    ±-------------------+
    | Database |
    ±-------------------+
    | information_schema |
    | mysql |
    | performance_schema |
    | test |
    ±-------------------+
    4 rows in set (0.00 sec)

  2. 如何选中一个数据库进行操作
    use test (选中数据库test)
    select * from ;

  3. 如何退出服务器命令?
    mysql >\q
    Bye

  4. 在数据库服务器中创建数据库?
    MariaDB [(none)]> create database student;
    Query OK, 1 row affected (0.00 sec)

  5. 如何创建一个数据表?
    MariaDB [student]> create table stu(name varchar(11),age varchar(20));
    Query OK, 0 rows affected (0.02 sec)

  6. 查看数据库中的数据表?
    MariaDB [student]> show tables;
    ±------------------+
    | Tables_in_student |
    ±------------------+
    | stu |
    ±------------------+
    1 row in set (0.00 sec)

  7. 查看数据表的结构
    MariaDB [student]> describe stu;
    ±------±------------±-----±----±--------±------+
    | Field | Type | Null | Key | Default | Extra |
    ±------±------------±-----±----±--------±------+
    | name | varchar(11) | YES | | NULL | |
    | age | varchar(20) | YES | | NULL | |
    ±------±------------±-----±----±--------±------+
    2 rows in set (0.00 sec)

  8. 向数据库中插入数据
    MariaDB [student]> insert into stu values(‘l’,‘24’);
    Query OK, 1 row affected (0.00 sec)

  9. 查看表中所有数据 ·
    MariaDB [student]> select * from stu;
    ±-----±-----+
    | name | age |
    ±-----±-----+
    | 11 | 24 |
    | l | 24 |
    | liu | 24 |
    | lzc | 24 |
    | LZC | 24 |
    ±-----±-----+
    5 rows in set (0.00 sec)

  10. 删除一条数据
    MariaDB [student]> delete from stu where name=‘l’;
    Query OK, 1 row affected (0.00 sec)

  11. 修改数库
    MariaDB [student]> update stu set name=‘xxx’ where age=‘24’;
    Query OK, 3 rows affected (0.00 sec)
    Rows matched: 3 Changed: 3 Warnings: 0
    总结一下,数据库常见操作
    –增加
    insert
    –删除
    deleate
    –修改
    update
    –查询
    select

mysql常用的数据类型
–数值

–日期/时间

–字符串(字符)类型

mysql建表的约束

–主键约束
能够唯一确定一张表中的一条记录,也就是我们通过某个字段添加的约束,就可以使得改字段不重复且不为空。
MariaDB [student]> create table user(id int primary key,name varchar(20));
Query OK, 0 rows affected (0.01 sec)

insert into user values(1,‘张三’);
Query OK, 1 row affected, 1 warning (0.01 sec)

MariaDB [student]> insert into user values(1,‘张三’);
ERROR 1062 (23000): Duplicate entry ‘1’ for key ‘PRIMARY’
重复插入同一id和name会出错 因为id是唯一的。
MariaDB [student]> insert into user values(2,‘张三’);
Query OK, 1 row affected, 1 warning (0.00 sec)
且不为空
MariaDB [student]> insert into user values(null,‘张三’);
ERROR 1048 (23000): Column ‘id’ cannot be null

–联合主键
–只要联合的主键加起来不重复就可以
MariaDB [student]> create table user2(id int,name varchar(20), password varchar(20), primary key(id,name));
Query OK, 0 rows affected (0.03 sec)

MariaDB [student]> insert into user2 values(1,‘zhangsan’‘123’);
ERROR 1136 (21S01): Column count doesn’t match value count at row 1
MariaDB [student]> insert into user2 values(1,‘zhangsan’,‘123’);
Query OK, 1 row affected (0.00 sec)

MariaDB [student]> insert into user2 values(2,‘zhangsan’,‘123’);
Query OK, 1 row affected (0.00 sec)

MariaDB [student]> insert into user2 values(1,‘lisi’,‘123’);
Query OK, 1 row affected (0.00 sec)

–自增约束
MariaDB [student]> create table user3(id int primary key auto_increment, name varchar(20));
Query OK, 0 rows affected (0.01 sec)

MariaDB [student]> insert into user3 (name) values(‘zhangsan’);
Query OK, 1 row affected (0.00 sec)

MariaDB [student]> insert into user3 (name) values(‘zhangsan’);
Query OK, 1 row affected (0.00 sec)

MariaDB [student]> insert into user3 (name) values(‘zhangsan’);
Query OK, 1 row affected (0.00 sec)

MariaDB [student]> select * from user3;
±—±---------+
| id | name |
±—±---------+
| 1 | zhangsan |
| 2 | zhangsan |
| 3 | zhangsan |
±—±---------+
3 rows in set (0.00 sec)
–当创建表的时候,忘记创建主键约束
MariaDB [student]> create table user4(id int, name varchar(20));
Query OK, 0 rows affected (0.01 sec)

MariaDB [student]> desc user4;
±------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
±------±------------±-----±----±--------±------+
2 rows in set (0.00 sec)

修改表结构,添加主键
MariaDB [student]> alter table user4 add primary key(id);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

MariaDB [student]> describe user4;
±------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±------+
| id | int(11) | NO | PRI | 0 | |
| name | varchar(20) | YES | | NULL | |
±------±------------±-----±----±--------±------+
2 rows in set (0.00 sec)
–如何删除
MariaDB [student]> alter table user4 drop primary key;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

MariaDB [student]> describe user4;
±------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±------+
| id | int(11) | NO | | 0 | |
| name | varchar(20) | YES | | NULL | |
±------±------------±-----±----±--------±------+
2 rows in set (0.00 sec)

–使用modify修改字段添加约束
MariaDB [student]> alter table user4 modify id int primary key;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

MariaDB [student]> describe user4;
±------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(20) | YES | | NULL | |
±------±------------±-----±----±--------±------+
2 rows in set (0.00 sec)

–唯一约束
约束修饰字段的值不可以重复
MariaDB [student]> create table user5(id int,name varchar(20));
Query OK, 0 rows affected (0.01 sec)

unique(name) name不可以重复。
MariaDB [student]> alter table user5 add unique(name);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

MariaDB [student]> describe user5;
±------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | UNI | NULL | |
±------±------------±-----±----±--------±------+
2 rows in set (0.00 sec)

MariaDB [student]> insert into user5 values(1,‘zhangsan’);
Query OK, 1 row affected (0.00 sec)

MariaDB [student]> insert into user5 values(1,‘zhangsan’);
ERROR 1062 (23000): Duplicate entry ‘zhangsan’ for key ‘name’
MariaDB [student]> insert into user5 values(1,‘lisi’);
Query OK, 1 row affected (0.00 sec)

直接创建表结构时使用unique(name);
MariaDB [student]> create table user6(id int,name varchar(20),unique(name));
Query OK, 0 rows affected (0.01 sec)

MariaDB [student]> describe user6;
±------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | UNI | NULL | |
±------±------------±-----±----±--------±------+
2 rows in set (0.01 sec)
–删除唯一约束
MariaDB [student]> alter table user6 drop index name;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

MariaDB [student]> describe user6;
±------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
±------±------------±-----±----±--------±------+
2 rows in set (0.00 sec)
–modify添加约束
MariaDB [student]> alter table user6 modify name varchar(20) unique;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0

MariaDB [student]> describe user6;
±------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | UNI | NULL | |
±------±------------±-----±----±--------±------+
2 rows in set (0.00 sec)

–非空约束
–修饰的字段不能为NULL
MariaDB [student]> create table user9(id int, name varchar(20) NOT NULL);
Query OK, 0 rows affected (0.01 sec)

MariaDB [student]> desc user9;
±------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | NO | | NULL | |
±------±------------±-----±----±--------±------+
2 rows in set (0.00 sec)
当name为NULL时报错。
MariaDB [student]> insert into user9 values(1,NULL);
ERROR 1048 (23000): Column ‘name’ cannot be null

–默认约束
–插入字段时,如果没有传值就会使用默认参数
MariaDB [student]> create table user10(id int,name varchar(20),age int default 10);
Query OK, 0 rows affected (0.01 sec)

MariaDB [student]> desc user10 ;
±------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| age | int(11) | YES | | 10 | |
±------±------------±-----±----±--------±------+
3 rows in set (0.01 sec)

age默认值时10.
MariaDB [student]> insert into user10 (id, name) values(1,‘zhangsan’);
Query OK, 1 row affected (0.00 sec)

MariaDB [student]> select * from user10;
±-----±---------±-----+
| id | name | age |
±-----±---------±-----+
| 1 | zhangsan | 10 |
±-----±---------±-----+
1 row in set (0.00 sec)

MariaDB [student]> insert into user10 values(1,‘lisi’,26);
Query OK, 1 row affected (0.00 sec)

传入age参数默认值改为传入参数。
MariaDB [student]> select * from user10;
±-----±---------±-----+
| id | name | age |
±-----±---------±-----+
| 1 | zhangsan | 10 |
| 1 | lisi | 26 |
±-----±---------±-----+
2 rows in set (0.00 sec)

–外键约束
–涉及到两个表:主表,副表

–班级表 主表
MariaDB [student]> create table classes(id int primary key,name varchar(20));
Query OK, 0 rows affected (0.01 sec)

MariaDB [student]> desc classes ;
±------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±------------±-----±----±--------±------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(20) | YES | | NULL | |
±------±------------±-----±----±--------±------+
2 rows in set (0.00 sec)

–学生表,副表
MariaDB [student]> create table students(id int primary key,name varchar(20),class_id int,foreign key(class_id) references classes(id));
Query OK, 0 rows affected (0.01 sec)

MariaDB [student]> desc students;
±---------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±---------±------------±-----±----±--------±------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(20) | YES | | NULL | |
| class_id | int(11) | YES | MUL | NULL | |
±---------±------------±-----±----±--------±------+
3 rows in set (0.00 sec)

向classes插入数据。
MariaDB [student]> insert into classes values(1,‘yiban’);
Query OK, 1 row affected (0.00 sec)

MariaDB [student]> insert into classes values(2,‘erban’);
Query OK, 1 row affected (0.01 sec)

MariaDB [student]> insert into classes values(3,‘sanban’);
Query OK, 1 row affected (0.00 sec)

MariaDB [student]> insert into classes values(4,‘siban’);
Query OK, 1 row affected (0.00 sec)

MariaDB [student]> select * from classes;
±—±-------+
| id | name |
±—±-------+
| 1 | yiban |
| 2 | erban |
| 3 | sanban |
| 4 | siban |
±—±-------+
4 rows in set (0.00 sec)

向students表中插入数据。
MariaDB [student]> insert into students values(1001,‘zhangsan’,1);
Query OK, 1 row affected (0.00 sec)

MariaDB [student]> insert into students values(1002,‘zhangsan’,2);
Query OK, 1 row affected (0.00 sec)

MariaDB [student]> insert into students values(1003,‘zhangsan’,3);
Query OK, 1 row affected (0.00 sec)

MariaDB [student]> insert into students values(1004,‘zhangsan’,4);
Query OK, 1 row affected (0.00 sec)

MariaDB [student]> select * from students;
±-----±---------±---------+
| id | name | class_id |
±-----±---------±---------+
| 1001 | zhangsan | 1 |
| 1002 | zhangsan | 2 |
| 1003 | zhangsan | 3 |
| 1004 | zhangsan | 4 |
±-----±---------±---------+
4 rows in set (0.00 sec)

MariaDB [student]> insert into students values(1005,‘zhangsan’,5);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (student.students, CONSTRAINT students_ibfk_1 FOREIGN KEY (class_id) REFERENCES classes (id))

主表classes中没有的数据值,在副标中,是不可以使用的。
主表中的记录被副表引用,是不可以被删除的。
MariaDB [student]> delete from classes where id=4;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (student.students, CONSTRAINT students_ibfk_1 FOREIGN KEY (class_id) REFERENCES classes (id))

数据库的三大设计范式

第一范式(拆字段)
INF
数据表中的所有字段是不可分割的原子值。
范式设计的越详细,对于实际操作可能更好,但并不一定有好处。
第二范式
必须满足第一范式的前提下,第二范式要求,出主键外每一列必须完全依赖。
如果出现不完全依赖只可能发生在联合主键的情况下。
1、订单表(联合主键=>共同组成订单表的主键)
– 订单表
create table myorder(
product_id int,
customer_id int,
product_name varchar(20),
customer_name varchar(20),
primary key(product_id, customer_id) /共同组成订单表的主键/
);
2、订单表问题(不满足2NF)
product_id 只和 product_name 有关;
customer_id 只和 customer_name 有关。
出现了 联合主键,可能会出现一些列 只依赖于 主键的某一部分。
除主键以外的其它列,只依赖于主键的部分字段。
拆表:拆分 为 主表 和 副表
3、拆表
拆分成三个表之后,就满足了第二范式的设计! !
– 订单表
create table myorder(
order_id int primary key,
product_id int, /完全依赖于主键/
customer_id int /完全依赖于主键/
);
– 产品表
create table product(
id int primary key,
name varchar(20) /完全依赖于主键/
);
– 客户表
create table customer(
id int primary key,
name varchar(20) /完全依赖于主键/
);
–第三范式
–必须先满足第二范式,除开主键列的其他列之间不能有传递依赖关系。
create table myorder(
order_id int primary key,
product_id int,
customer_id int, /customer_phone与order_id有关系/
customer_phone varchar(15) /customer_phone与order_id、customer_id有关系 ===》关系冗余!/
);
应该这样写!
– 客户表
create table customer(
id int primary key,
name varchar(20), /完全依赖于主键/
phone varchar(15)
);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值