MySQL基础(一)
MySQL服务的启动和关闭
- 手动
鼠标右键此电脑"管理",进入"服务和应用程序",定位至mysql(名称可能不是mysql,取决于用户安装时的命名,例如可能是mysql80)可见服务具体启动及设置情况,可设置mysql为自启动,之后开机后不用再进行mysql启动操作. - cmd输入services.msc打开服务与应用程序,之后操作同上.
- 使用管理员打开cmd
net start mysql //启动mysql服务
(取决于用户的数据库命名,可能是mysql80,操作变为 net start mysql80,数据库名没输对,cmd反应为服务名无效)
net stop mysql //关闭mysql服务
登录与退出MySQL
登录
- mysql -uroot -p密码 //u代表username,p代表password
- mysql -uroot -p回车–>再输密码,此时密码不可见,相对上一种暴露密码的方式此方法安全,建议使用此方法.
- mysql -hip -uroot -p链接目标的密码
退出
- exit
- quit
- \q
mysql> exit
Bye
C:\Windows\system32>
mysql> quit
Bye
C:\Windows\system32>
mysql> \q
Bye
C:\Windows\system32>
SQL
基本概念
结构化查询语言(Structured Query Language),其实就是定义了操作所有关系型数据库的规则
通用语法
- SQL语句可以单行或多行书写,以分号结尾.
- 可用缩进和空格增强语句的可读性.
- MySQL的SQL语句不区分大小写,关键字一般用大写.
注释
单行注释:
- – 注释
- # 注释
多行注释: - /*
注释
*/
数据库操作-增删改查CRUD
-
增(create)
CREATE DATABASE 数据库名称;
判断数据库存在与否,不存在则创建(由于创建重复数据库会报错)
CREATE DATABASE IF NOT EXISTS 数据库名称 CHARACTER SET 字符集名;
(同时指定了字符集) -
删(delete)
- 删除数据库
- DROP DATABASE 数据库名称;
- 判断数据库是否存在,存在则删除.
- DROP DATABASE IF EXIISTS 数据库名称;
- 改(update)
- 修改数据库的字符集
-ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称;
- 查(retrieve)
- 查询所有数据库名称;
SHOW DATABASES;
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| db1 |
| db3 |
| db4 |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
7 rows in set (0.02 sec)
- 查询某个数据库的字符集
SHOW CREATE DATABASE 数据库名称;
mysql> SHOW CREATE DATABASE DB1;
+----------+-------------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database |
+----------+-------------------------------------------------------------------------------------------------------------------------------+
| DB1 | CREATE DATABASE `DB1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+-------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
- 使用数据库
- 查询当前正在使用的数据库名称
select database(); - 使用数据库
use 数据库名称;
操作表
- 创建表
- 语法
- CREATE TABLE 表名(
列名1 数据结构1,
列名2 数据结构2,
…
列名n 数据结构n
);
- CREATE TABLE 表名(
- 数据库类型:
- int:整型
- eg: AGE INT,
- double:小数类型
- eg: SCORE DOUBLE(5,2), 小数5位,小数点后2位如999.99
- date:日期,年月日 yyyy-MM–dd
- datetime:yyyy-MM–dd HH:mm:ss
- timestamp:时间戳(如果不给这个字段赋值,或值为null,则默认使用当前系统时间)
- varchar:字符串
- eg: NAME VARCHAR(20), 姓名最大20个字符.
- int:整型
mysql> CREATE TABLE STUDENT(
-> ID INT,
-> NAME VARCHAR(32),
-> AGE INT,
-> SCORE DOUBLE(4,2),
-> BIRTHDAY DATE,
-> INSERT_TIME TIMESTAMP
-> );
Query OK, 0 rows affected, 1 warning (0.05 sec)
mysql> DESC STUDENT;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| ID | int | YES | | NULL | |
| NAME | varchar(32) | YES | | NULL | |
| AGE | int | YES | | NULL | |
| SCORE | double(4,2) | YES | | NULL | |
| BIRTHDAY | date | YES | | NULL | |
| INSERT_TIME | timestamp | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
6 rows in set (0.01 sec)
- 删除表
- DROP TABLE IF EXISTS 表名;
复制表:CREATE TABLE 表名 LIKE 被复制的表名;
创建一个和STUDENT一样的表STU;
然后删除.
mysql> CREATE TABLE STUD LIKE STUDENT;
Query OK, 0 rows affected, 1 warning (0.03 sec)
mysql> DROP TABLE IF EXISTS STUD;
Query OK, 0 rows affected (0.03 sec)
- 修改表
- 修改表名
ALTER TABLE 表名 RENAME TO 新的表名; - 修改表字符集
ALTER TABLE 表名 CHARACTER SET 字符集名称; - 添加列名
ALTER TABLE 表名 ADD 列名 数据类型; - 修改列名称
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
ALTER TABLE 表名 MODIFY 列名 新数据类型; - 删除列
ALTER TABLE 表名 DROP 列名;
- 查询表
- 查询某个数据库中的所有名称
- SHOW TABLES;
- 查询表结构
- DESC 表名;