【Mysql 学习】mysql 的使用入门

本文介绍MySQL的基本操作,包括数据库和表的创建、修改、删除,以及字段的增删改等DDL语句,并演示了INSERT语句的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开始学习mysql ,记录自己学习的一点记录。

--创建数据库company
mysql> create database company;
Query OK, 1 row affected (0.00 sec)

--要知道系统中有那些数据库,可以使用如下命令来查询:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| company            |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)
information_schema --主要存储了系统中的一些数据库对象信息,比如用户表信息,列信息,权限信息, 字符集信息,分区信息。
mysql      
      --存储了系统的用户权限信息
test               --系统自动创建的数据库,任何人都可以使用。
--查询当前使用的数据库。
mysql> select database();
+------------+
| database() |
+------------+
| NULL       |
+------------+
1 row in set (0.00 sec)

mysql> use company;
Database changed
mysql> select database();
+------------+
| database() |
+------------+
| company    |
+------------+
1 row in set (0.00 sec)
--删除数据库company
mysql> drop database company;
Query OK, 0 rows affected (0.03 sec)
-使用use dbname 选择要连接的数据库
mysql> use mysql;
Database changed
--查看mysql数据库中存在的数据表。
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
23 rows in set (0.03 sec)
--创建表,由于mysql的表名是以目录的形式存在磁盘上的,所以表名要符合任何目录名允许的字符。
mysql> create table dept(deptno int(4),deptname varchar(50));
Query OK, 0 rows affected (0.00 sec)
--查看表结构。
mysql> desc dept;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| deptno   | int(4)      | YES  |     | NULL    |       |
| deptname | varchar(50) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> create table employee (eid int(4),ename varchar(50), birthday date,deptno
 int (4));
Query OK, 0 rows affected (0.01 sec)
---查看构造表的ddl语句。
mysql> show create table  employee \G
*************************** 1. row ***************************
       Table: employee
Create Table: CREATE TABLE `employee` (
  `eid` int(4) DEFAULT NULL,
  `ename` varchar(50) DEFAULT NULL,
  `birthday` date DEFAULT NULL,
  `deptno` int(4) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

--alter table 的使用方法。
--修改表名。
mysql> alter table employee rename emp;
Query OK, 0 rows affected (0.00 sec)

mysql> desc emp;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| eid      | int(4)      | YES  |     | NULL    |       |
| ename    | varchar(50) | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
| deptno   | int(4)      | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> show tables ;
+-------------------+
| Tables_in_company |
+-------------------+
| dept              |
| emp               |
+-------------------+
2 rows in set (0.00 sec)

--修改表中列名。
ALTER TABLE TABNAME CHANGE COLUMN old_col_name new_col_name col_definition
--将birthday 改为 birthdate
mysql> alter  table emp change birthday birdate date;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc emp;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| eid     | int(4)      | YES  |     | NULL    |       |
| ename   | varchar(50) | YES  |     | NULL    |       |
| birdate | date        | YES  |     | NULL    |       |
| deptno  | int(4)      | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
--修改表中字段的类型
ALTER TABLE TABNAME MODIFY [COLUMN] column_definition [FIRST|AFTER col_name]

mysql> alter table emp modify eid  int(5);
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> alter table emp modify sex char(2) first;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> desc emp;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| sex     | char(2)     | YES  |     | NULL    |       |
| eid     | int(5)      | YES  |     | NULL    |       |
| ename   | varchar(50) | YES  |     | NULL    |       |
| birdate | date        | YES  |     | NULL    |       |
| deptno  | int(4)      | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.01 sec)
比较一下 change 与modify的区别:
 1 change 和 modify 都可以修改表的定义,不同的是change后面需要写两次列名,不方便,
 2 但是change的优点是可以修改表中的列名称,而modify则不能。
   alter table tabname  add new_column after/before ole_column;
   alter table emp  modify age int(3) first;
--增加表中的字段
语法:
alter table tabname add [column] column_definition [first|after col_name]

mysql> alter table emp add column sex char(2);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc emp;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| eid     | int(5)      | YES  |     | NULL    |       |
| ename   | varchar(50) | YES  |     | NULL    |       |
| birdate | date        | YES  |     | NULL    |       |
| deptno  | int(4)      | YES  |     | NULL    |       |
| sex     | char(2)     | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
--
mysql> alter table emp add column sex char(2) after ename;
ERROR 1060 (42S21): Duplicate column name 'sex'
--删除表中的字段。
mysql> alter table emp drop column sex;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0
--指定添加字段所在的位置。默认是添加到表中末尾。
mysql> alter table emp add column sex char(2) after ename;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc emp;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| eid     | int(5)      | YES  |     | NULL    |       |
| ename   | varchar(50) | YES  |     | NULL    |       |
| sex     | char(2)     | YES  |     | NULL    |       |
| birdate | date        | YES  |     | NULL    |       |
| deptno  | int(4)      | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

--注意:CHANGE\FIRST\AFTER COLUMN 是mysql 在标准sql的拓展。在其他数据库上不一定适用
--关于DML 语句这里和sql标准一样的就不再多做介绍了,重点说一下 insert 插入操作:
   insert into tabname(col1,col2,...) values(val1,val2,...)
--mysql支持如下操作:
mysql> insert into dept(deptno ,deptname) values (1002,'ceo');
Query OK, 1 row affected (0.00 sec)
mysql> insert into dept(deptno ,deptname) select 1003,'manager';
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0
mysql> select * from dept;
+--------+----------+
| deptno | deptname |
+--------+----------+
|   1001 | hr       |
|   1002 | ceo      |
|   1003 | manager  |
+--------+----------+
3 rows in set (0.00 sec)
 insert into tabname(col1,col2,...) select val1,val2,..[,select val1,val2,...]
 其中 val与 col 的类型必须一致。否则:
mysql> insert into emp select 10001,'zhangsan','2010-12-30',1001;
ERROR 1136 (21S01): Column count doesn't match value count at row 1
mysql> desc emp;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| sex     | char(2)     | YES  |     | NULL    |       |
| eid     | int(5)      | YES  |     | NULL    |       |
| ename   | varchar(50) | YES  |     | NULL    |       |
| birdate | date        | YES  |     | NULL    |       |
| deptno  | int(4)      | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.02 sec)
顺序不一致时,会报错,字段类型不一致时也会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值