基础题
- 关系型数据库核心元素有哪些?
数据行
数据列
数据表(数据行的集合)
数据库(数据表的集合)
- 使用命令行连接数据库服务器的命令是什么?
mysql -u用户名 -p密码
或
mysql -u用户名 -p
回车后输入用户名
- 列出数据库的命令
查看所有数据库
show databases;
使用数据库
use 数据库名;
查看当前使用的数据库
select database();
创建数据库
create database 数据库名;
删除数据库
dorp database 数据库名;
- 列出表的命令
查看当前数据库的所有表
show tables;
查看指定表的结构
desc 表名;
- 设计班级表结构为id、name、is_delete,编写创建表的语句
mysql> create table class(
-> id int unsigned auto_increment primary key not null,
-> cls_name varchar(20) default '',
-> is_delete bit default null);
Query OK, 0 rows affected (1.58 sec)
mysql> desc class;
+-----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| cls_name | varchar(20) | YES | | | |
| is_delete | bit(1) | YES | | NULL | |
+-----------+------------------+------+-----+---------+----------------+
- 列出数据操作语句的语法
增加
insert into 表名 values (...);
insert into 表名(列名) values (...);
insert into 表名 values (...),(...),(...),(...);
修改
update 表名 set 列名=... where 条件;
删除
delete from 表名 where 条件;
基本查询
select * from 表名;
- 向班级表中插入数据python1、python2、python3
insert into class (name) values ('python1'),('python2'),('python3');
进阶题
- 学生表结构设计为:姓名、生日、性别、家乡,并且学生表与班级表为多对一的关系,写出创建学生表的语句
mysql> create table students(
-> id int unsigned auto_increment primary key not null,
-> name varchar(20) not null,
-> birthday date,
-> gender enum('男','女','中性','保密'),
-> hometown varchar(20),
-> cls_id int unsigned,
-> is_delete bit default 0);
- 向学生表中插入数据:
* python1班有郭靖、黄蓉,要求:使用全列插入,一次一值
insert into students values(0,'郭靖','2016-1-1',1,'蒙古',1,0);
insert into students values(0,'黄蓉','2016-5-8',2,'桃花岛',1,0);
* python2班有杨过、小龙女,要求:使用指定列插入,一次一值
insert into students(name,gender,cls_id) values('杨过',1,2);
insert into students(name,gender,cls_id) values('小龙女',2,2);
* 未分班的学生有黄药师、洪七公、洪七婆,要求:使用指定列插入,一次多值
insert into students(name) values('黄药师'),('洪七公'),('洪七婆');
mysql> select * from students;
+----+-----------+------------+--------+-----------+--------+-----------+
| id | name | birthday | gender | hometown | cls_id | is_delete |
+----+-----------+------------+--------+-----------+--------+-----------+
| 3 | 郭靖 | 2016-01-01 | 男 | 蒙古 | 1 | |
| 4 | 黄蓉 | 2016-05-08 | 女 | 桃花岛 | 1 | |
| 5 | 杨过 | NULL | 男 | NULL | 2 | |
| 6 | 小龙女 | NULL | 女 | NULL | 2 | |
| 7 | 黄药师 | NULL | NULL | NULL | NULL | |
| 8 | 洪七公 | NULL | NULL | NULL | NULL | |
| 9 | 洪七婆 | NULL | NULL | NULL | NULL | |
+----+-----------+------------+--------+-----------+--------+-----------+
- 查询学生的姓名、生日,如果没有生日则显示无
select name, ifnull(birthday,'no') from students;
+-----------+-----------------------+
| name | ifnull(birthday,'no') |
+-----------+-----------------------+
| 郭靖 | 2016-01-01 |
| 黄蓉 | 2016-05-08 |
| 杨过 | no |
| 小龙女 | no |
| 黄药师 | no |
| 洪七公 | no |
| 洪七婆 | no |
+-----------+-----------------------+
7 rows in set (0.06 sec)
ifnull函数
存在则输出前面内容,不存在则输出后面内容
- 查询学生的姓名、年龄
select name, year(now())-year(birthday) as age from students where birthday != '';
+--------+------+
| name | age |
+--------+------+
| 郭靖 | 4 |
| 黄蓉 | 4 |
+--------+------+
- 逻辑删除洪七婆
update students set isdelete=1 where name='洪七婆'