数据库操作
连接数据库:
1 | /Applications/XAMPP/xamppfiles/bin/mysql -uroot -p123456 |
创建数据库
1 | mysql> create database uiste charset=utf8; |
选择数据库
1 | mysql> use uiste; |
创建数据表
1 | mysql> create table uiste_stu( |
查看所有表:
1 | mysql> show tables; |
显示创建表的SQL语句
语法:show create table 表名 [\G];1
2
3
4
5
6
7
8
9
10
11
12
13
14
15mysql> show create table uiste_stu \G;
*************************** 1. row ***************************
Table: uiste_stu
Create Table: CREATE TABLE `uiste_stu` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(10) NOT NULL,
`sex` char(1) NOT NULL DEFAULT '男',
`age` tinyint(4) NOT NULL,
`score` decimal(3,1) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
ERROR:
No query specified
删除表
语法:drop table 表1,表2,表3;1
2
3
4
5mysql> drop tabel stu;
Query OK, 0 rows affected (0.01 sec)
mysql> show tables;
Empty set (0.00 sec)
数据表操作
显示数据表结构
1 | mysql> describe uiste_stu; |
插入数据
语法:insert into 表名 (字段1,字段2) values (值1,值2);1
2mysql> insert into uiste_stu (id,name,sex,age,score) values(2,'杜敏',' 女',22,59.9);
Query OK, 1 row affected (0.01 sec)
*插入字段可以和数据库中的字符顺序不一致,但是值需要和字段的顺序一致;1
insert into uiste_stu (name,id,sex,age,score) values('钟程程',3,'女',23,79.9);
*插入字段是可以省略的,插入的值和数据表中的字段顺序和个数是一致的;1
insert into uiste_stu values(4,'赵哥','男',45,19.9);
*自动增长的插入1
insert into uiste_stu values(null,'圆哥','女',18,89.9);
*默认值的插入(default不带分号)1
insert into uiste_stu values(6,'张宝',default,28,9.9);
修改数据
语法:update 表名 set 字段1=值1,字段2=值2 where 条件;
*将赵哥的性别改为女;1
2
3mysql> update uiste_stu set sex='女' where name='赵哥';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
*若不加限定条件,将表中所有字段进行更改;
删除数据
语法:delete from 表名 [where 条件];
*删除id为6的信息1
mysql> delete from uiste_stu where id=6;
查询数据
语法:select 列名 from 表名 [where 条件] [order by 字段 asc|desc] [limit 起始位置,获取条数];
默认升序:asc 降序:desc
limit 限制:限制取几条数据
*查询所有学生的姓名和性别1
mysql> select name,sex from uiste_stu;
*查询所有学生的所有字段1
2mysql> select id,name,sex,age,score from uiste_stu;
mysql> select * from uiste_stu;
*查询所有男生的信息1
mysql> select * from uiste_stu where sex='男';
*查询所有分数大于60分的女生1
mysql> select * from uiste_stu where sex='女' and score>=60;
*查询将所有分数大于60分的学生的信息,按分数从高到低排序1
mysql> select * from uiste_stu where score>=60 order by score desc;
*查询数据表中的前三条数据1
mysql> select * from uiste_stu limit 3;
*查询第二条开始往后的三条数据(第一条是0)1
mysql> select * from uiste_stu limit 1,3;
*查询分数前三名的学生信息1
mysql> select * from uiste_stu order by score desc limit 3;
*最后查询所有的数据1
2
3
4
5
6
7
8
9
10
11
12mysql> select * from uiste_stu;
+----+-----------+-----+-----+-------+
| id | name | sex | age | score |
+----+-----------+-----+-----+-------+
| 1 | 小兰 | 男 | 25 | 98.7 |
| 2 | 杜敏 | 女 | 22 | 59.9 |
| 3 | 钟程程 | 女 | 23 | 79.9 |
| 4 | 赵哥 | 女 | 45 | 19.9 |
| 5 | 圆哥 | 女 | 18 | 89.9 |
| 6 | 张宝 | 男 | 28 | 9.9 |
+----+-----------+-----+-----+-------+
6 rows in set (0.00 sec)
聚合函数
· sum():求和1
mysql> select sum(score) from uiste_stu;
· avg():求平均值1
mysql> select avg(score) from uiste_stu;
· max():求最大值1
mysql> select max(score) from uiste_stu;
· min():求最小值(不算null)1
mysql> select min(score) from uiste_stu;
· count():求记录数1
mysql> select count(*) from uiste_stu;
比较运算符
= 等于和赋值
<> 不等于
· 逻辑运算符
and 与
or 或
not 非
数据库常见问题
创建的数据库已存在1
ERROR 1007 (HY000): Can't create database 'uiste'; database exists
创建的数据库是一个关键字,解决在名字上加上反引号1
create database `create`; 反引号可以创建更为复杂的字符和汉字
delete 和 drop 删除表名的区别
delete删除表的内容,表的结构还保留,drop 删除整个表
创建数据库或者数据表必要时进行的判断1
create database if not exists uiste
一张表只能有一个主键,但是主键可以由多个字段组成,如:1
2
3
4
5
6CREATE TABLE `products_description` (
`products_id` int(11) NOT NULL,
`language_id` int(11) NOT NULL default '1',
`products_name` varchar(64) NOT NULL default '',
PRIMARY KEY (`products_id`,`language_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;