mysql

发布时间 2023-09-30 11:39:21作者: R3alityER

1.基本语句

mysql -u root -p --连接数据库

show databases --列出所有数据库

create database xxx --创建一个数据库

use xxx --切换到xxx数据库

show tables --列出当前数据库所有的表

-- 注释
/* (多行注释)
hello
r3ality
*/

数据库xxx语言

  • DDL define
  • DML manage
  • DQL query
  • DCL control

DDL

(一)操作数据库

2.1 操作数据库

1.创建数据库

CREATE DATABASE [IF NOT EXISTS] xxx;

2.删除数据库

DROP DATABASE [IF EXISTS] XXX;

3.使用数据库

USE xxx;

mysql数据类型

数字

  • tinyint (一个字节)
  • smallint (两个字节)
  • mediumint (三个字节)
  • int四个字节
  • bigint (八个字节)
  • float 浮点数 (四个字节)
  • double 浮点数(八个字节)
  • decimal 字符串形式的浮点数

字符串

  • char 定长字符串0~255

  • varchar 可变字符串 0~65535

  • tinytext 微型文本 0~2^8-1

  • text 文本 0~2……16-1

日期

java.util.Date

  • datetime YYYY-MM-DD HH:MM:SS 最常用的时间格式

  • timestamp 时间戳,1970.1.1到现在的毫秒数!

数据库的字段属性

unsigned :
  • 无符号整数
  • 该列不能为负数
zerofill:

int(3), 5:005

自增
  • 自动在上一条记录的基础上+1
  • 用来设计主键,必须为整数
非空

如果没有赋值,就会报错

默认
  • 设置默认的值
  • 如果不指定值,就会有默认的值

(二)操作表

创建表
create table student(
   id char(5),
   name varchar(20),
   age int(10)
);

)

查看当前数据库所有表

show tables;

查看表的结构

desc student

删除表

drop table student

修改表

1.添加列:给student表添加sex列
    alter table student add (sex varchar(10));
2.修改列类型:修改name列类型为char
    alter table student modify name char((10));
3.修改列名:修改age列名为country
    alter table student change age country int(10);
4.删除列:删除表的age列
    alter table student drop age;
5.修改表名称:修改student表为stu
    alter table student rename stu

DML

  • insert
  • update
  • delete

insert

insert into stu values(2,1500,25,'女');
insert into stu (id,salary,age,sex)values(2,1500,25,'女');

update

update stu set salary=2300,age=33,sex='女'where id=1
update stu set sex='男'where sex is null
update stu set age=age+1 where salary=2500

delete

delete from stu where id =1

DQL

基础查询

1.mysql> select * from stu;  -- 查询整张表的内容
+----+--------+-----+-----+------+
| id | salary | age | sex | name |
+----+--------+-----+-----+------+
|  1 |   2500 |  20 | 女  | 小王 |
|  2 |   3000 |  30 | 男  | 小李 |
|  3 |   2800 |  28 | 女  | 小红 |
+----+--------+-----+-----+------+
2. mysql> select 'id','age' from stu; -- 只查询id和age两个字段的内容
+----+-----+
| id | age |
+----+-----+
| id | age |
| id | age |
| id | age |
+----+-----+ 
3.
mysql> select concat('学号:',id) as 新学号 from stu; -- 字段前拼接
+--------+
| 新学号 |
+--------+
| 学号:1 |
| 学号:2 |
| 学号:3 |
+--------+

where子句

逻辑运算符

  • and
  • or
  • not
+----+--------+-----+-----+------+
| id | salary | age | sex | name |
+----+--------+-----+-----+------+
|  1 |   2500 |  20 | 女  | 小王 |
|  2 |   3000 |  30 | 男  | 小李 |
|  3 |   2800 |  28 | 女  | 小红 |
+----+--------+-----+-----+------+

mysql> select salary,age from stu where salary>=2800 and age<=28;
+--------+-----+
| salary | age |
+--------+-----+
|   2800 |  28 |


mysql> select salary,age from stu where salary between 2500 and 2900;
+--------+-----+
| salary | age |
+--------+-----+
|   2500 |  20 |
|   2800 |  28 |
+--------+-----+ 	

mysql> select salary,age from stu where not salary=2500;
+--------+-----+
| salary | age |
+--------+-----+
|   3000 |  30 |
|   2800 |  28 |

模糊查询

比较运算符

is null 如果操作值为空,布尔值为真
is not null 如果操作值不为空,布尔值为真
between...and 如果一个数在另外两个数之间,布尔值为真
like 如果一个数与另一个数匹配,布尔值为真
in 如果一个数在另外一堆数之间,布尔值为真