MySQL纯小白操作

数据库和数据库表操作

作者:刘佳乐

  • 2020.6.18

一、基本语法

1).创建数据库

CREATE DATABASE [IF NOT EXISTS] 数据库名;

2).删除数据库

DORP DATABASE [IF EXISTS] 数据库名;

3).查看数据库

SHOW DATABASES;

4).使用数据库

USE 数据库名;

二、Oracle上使用数据库

登录的适合使用数据库
1 mysql -uroot -D 数据库名 -p
2 enter password:ok

1.创建数据库
mysql> create database if not exists ljldata;
Query OK, 1 row affected (0.00 sec)

2.查询数据库
mysql> show databases
    -> ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ljldata            |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.01 sec)

3.删除数据库
mysql> drop database if exists ljldata;
Query OK, 0 rows affected (0.00 sec)

4.查询数据库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

5.使用数据库(也就是数据的切换)
mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed

3.结构化语言分类

名称

4.创建数据库表语法

名称

5.数据库列类型

名称

1.数值类型

名称

2.字符串类型

名称

3.时间类型

名称

4.null类型

名称

6.列的属性字段

名称

名称

1.创建数据库并使用数据

mysql> create database ljldata;
Query OK, 1 row affected (0.00 sec)

mysql> use ljldata;
Database changed

2.创建数据库表students

mysql> create table students
    -> (id int unsigned not null auto_increment primary key,
    -> name char(8) not null,                                                
    -> sex char(4) not null,                                                
    -> age tinyint unsigned not null,                                                
    -> tel char(13) null default '_'                                                 
    -> );                                                                            
Query OK, 0 rows affected (0.00 sec)


3.查看表结构

mysql> desc students;
+-------+---------------------+------+-----+---------+----------------+
| Field | Type                | Null | Key | Default | Extra          |
+-------+---------------------+------+-----+---------+----------------+
| id    | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
| name  | char(8)             | NO   |     | NULL    |                |
| sex   | char(4)             | NO   |     | NULL    |                |
| age   | tinyint(3) unsigned | NO   |     | NULL    |                |
| tel   | char(13)            | YES  |     | _       |                |
+-------+---------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

7.修改数据库

名称

1.修改表名

mysql> alter table students rename as stu;
Query OK, 0 rows affected (0.01 sec)

2.查看该数据下所有的数据库表

mysql> show tables;
+-------------------+
| Tables_in_ljldata |
+-------------------+
| stu               |
+-------------------+
1 row in set (0.00 sec)

3.添加字段

添加password密码字段
mysql> alter table stu add password char(8);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

查看表结构
mysql> desc stu;
+----------+---------------------+------+-----+---------+----------------+
| Field    | Type                | Null | Key | Default | Extra          |
+----------+---------------------+------+-----+---------+----------------+
| id       | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
| name     | char(8)             | NO   |     | NULL    |                |
| sex      | char(4)             | NO   |     | NULL    |                |
| age      | tinyint(3) unsigned | NO   |     | NULL    |                |
| tel      | char(13)            | YES  |     | _       |                |
| password | char(8)             | YES  |     | NULL    |                |
+----------+---------------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

4.修改字段

mysql> alter table stu modify password char(4);
\Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> alter table stu change password pwd char(5);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc stu;
+-------+---------------------+------+-----+---------+----------------+
| Field | Type                | Null | Key | Default | Extra          |
+-------+---------------------+------+-----+---------+----------------+
| id    | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
| name  | char(8)             | NO   |     | NULL    |                |
| sex   | char(4)             | NO   |     | NULL    |                |
| age   | tinyint(3) unsigned | NO   |     | NULL    |                |
| tel   | char(13)            | YES  |     | _       |                |
| pwd   | char(5)             | YES  |     | NULL    |                |
+-------+---------------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

5.删除字段

mysql> alter table stu drop pwd;
Query OK, 0 rows affected (0.24 sec)
Records: 0  Duplicates: 0  Warnings: 0

8.删除数据库表

1.删除数据库表

mysql> drop table if exists stu;
Query OK, 0 rows affected (0.00 sec)

mysql> -- 查看该库下用户下的所有数据库表
mysql> show tables;
Empty set (0.00 sec)

三、增删改查语法

having子句:有group by才能having子句,只有满足“条件表达式”中指定的条件的才能够输出。
 
group by子句通常和count()、sum()等聚合函数一起使用。
 
order by子句:按照“属性名”指定的字段进行排序。排序方式由“asc”和“desc”两个参数指出,默认是按照“asc”来排序,即升序。
 
模糊查询:where like %%;
查询空值:where is null;
数据去重:distinct
与:and
或:or

分组:group by
SELECT s_id ,COUNT(1) AS total FROM fruits GROUP BY s_id
 
MYSQL中可以在GROUP BY中使用GROUP_CONCAT()函数,将每个分组中各个字段的值显示出来


SELECT s_id,GROUP_CONCAT(f_name) AS NAMES FROM fruits GROUP BY s_id
查询总条数:select count(*) from 表名;

select 字段名1,字段名2或[*] from  表名;

-- 插入数据(有id序列)
insert into 表名(字段名1,字段名2,..) values(值1,值2,...);

-- 修改数据
update 表名 set 列名=新值 where 字段名=字段值;

-- 删除数据
delete from 表名 where 字段名=字段值;

三、MySQL上增删改查操作

CREATE TABLE students(
	id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
	NAME VARCHAR(20) NOT NULL,
	pwd VARBINARY(20) NOT NULL,
	age INT UNSIGNED DEFAULT 0,
	sex CHAR(4) DEFAULT '男'
);

-- 插入查询语句
-- INSERT INTO 表名(列名1,列名2,列名3,....) VALUES (值1,值2,值3,...);
INSERT INTO students(NAME,pwd,age) VALUES ('ljl','456',20);
INSERT INTO students(NAME,pwd,age) VALUES('啊乐','123',22);

-- 修改
-- update 表名 set 列名='新值' where 列名=值{and 列名=值...}
UPDATE students SET pwd ='12345556' WHERE id=1;

-- 创建teacher表
CREATE TABLE teacher(
	id INT UNSIGNED NOT NULL PRIMARY KEY,
	NAME VARCHAR(20) NOT NULL,
	pwd VARCHAR(20) NOT NULL,
	classid INT(10) NOT NULL
);

-- 插入数据
INSERT INTO teacher(id,NAME,pwd,classid) VALUES(1,'阿乐','123',1);
INSERT INTO teacher(id,NAME,pwd,classid) VALUES(2,'啊乐','456',1);
INSERT INTO teacher(id,NAME,pwd,classid) VALUES(3,'阿豪','789',2);
INSERT INTO teacher(id,NAME,pwd,classid) VALUES(4,'啊豪','987',2);

-- 条件查询
-- select * from 表名 where 列名=值;
SELECT * FROM teacher WHERE id=1;

-- 查询所有
-- select * from 表名
SELECT * FROM teacher;

-- 进一步练习
SELECT * FROM teacher WHERE classid=1;
SELECT * FROM teacher;

UPDATE teacher SET pwd='147' WHERE id =3;
SELECT * FROM teacher;

DELETE FROM teacher WHERE id=4;
SELECT * FROM teacher;

INSERT INTO teacher(id,NAME,pwd,classid) VALUES(4,'啊豪','258',2);
INSERT INTO teacher(id,NAME,pwd,classid) VALUES(5,'啊豪豪','369',2);

-- 使用聚合函数统计条数
SELECT COUNT(*) FROM teacher;
SELECT COUNT(1) FROM teacher;

-- 1.根据编号分组查询
SELECT classid FROM teacher GROUP BY classid;

-- 2.先根据classid分组,分组后查询classid=2 (分组后的条件写在having后)
SELECT classid FROM teacher GROUP BY classid HAVING classid=2;

-- 3.按照ID降序查询
SELECT id,NAME FROM teacher ORDER BY id DESC;

-- 4.按照id升序查询(默认升序)
SELECT id,NAME FROM teacher ORDER BY id ASC;

-- 5.条件降序
SELECT NAME,id FROM teacher WHERE id<4 ORDER BY id DESC;

-- 6.模糊查询,查以"阿"开头(右模糊)
SELECT * FROM teacher WHERE NAME LIKE '阿%';

-- 7.模糊查询,查以'乐'结尾(左模糊)
SELECT * FROM teacher WHERE NAME LIKE '%乐';

-- 8.模糊查询,查询包含"豪"关键字的(左右迷糊==全模糊)
SELECT * FROM teacher WHERE NAME LIKE '%豪%';

-- 9.去重查询
SELECT DISTINCT id,NAME FROM teacher;

-- 10.创建班级表
CREATE TABLE classes(
	id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
	NAME VARBINARY(20) NOT NULL
);

-- 11.给班级表插入数据
INSERT INTO classes(NAME) VALUES('ljl');

-- 12.查询classes数据
SELECT * FROM classes;

-- 13.teacher和classes联查
SELECT c.id,c.name,t.id,t.name,t.pwd,t.classid
FROM teacher t,classes c
WHERE t.`classid`=c.`id`;

SELECT c.id,c.name,t.id,t.name,t.pwd,t.classid
FROM classes c,teacher t
WHERE t.`classid`=c.`id`;

SELECT * 
	FROM teacher t,classes c
	WHERE t.`classid`=c.`id`;

-- 给列添加别名
SELECT c.id cid,c.name cname,t.id tid,t.name tname,t.pwd
	FROM classes c,teacher t
	WHERE t.`classid`=c.`id`;

-- 函数:最大值
SELECT MAX(id) FROM teacher;
SELECT MAX(id) AS 'id最大值' FROM teacher;
SELECT MAX(id) 'id最大值' FROM teacher;

-- 最小值
SELECT MIN(id) FROM teacher;
SELECT MIN(id) AS 'id最小值' FROM teacher;
SELECT MIN(id) 'id最小值' FROM teacher;

-- 平均值
SELECT AVG(id) FROM teacher;
SELECT AVG(id) AS 'id平均值' FROM teacher;
SELECT AVG(id) 'id平均值' FROM teacher;

-- 去重空格
SELECT TRIM('阿乐');

-- 获取系统时间
SELECT NOW();

-- 将日期和时间分开查询
SELECT UTC_DATE(),UTC_TIME();

猜你喜欢

转载自blog.csdn.net/weixin_45037570/article/details/106821131