四、数据库操作
1、创建数据库
注意:创建数据库前要先连接mysql数据库
语法:create database <数据库名>
例:创建数据库并分配用户
1.create database 数据库名
2.GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 数据库名.* TO 数据库名@localhost IDENTIFIED BY '密码';
3.SET PASSWORD FOR '数据库名'@'localhost' = OLD_PASSWORD('密码');
2、显示数据库
语法:show databases
注意:为了不再显示的时候乱码,要修改数据库默认编码。以下以GBK编码页面为例进行说明
1.修改MYSQL的配置文件:my.ini里面修改default-character-set=gbk 或 utf8mb4
2.代码运行时修改:
①Java代码:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk
②PHP代码:header("Content-Type:text/html;charset=gb2312");
③C语言代码:int mysql_set_character_set( MYSQL * mysql, char * csname);
该函数用于为当前连接设置默认的字符集。字符串csname指定了1个有效的字符集名称。连接校对成为字符集的默认校对。该函数的工作方式与SET NAMES语句类似,但它还能设置mysql- > charset的值,从而影响了由mysql_real_escape_string() 设置的字符集。
3、删除数据库
语法:drop database <数据库名>
例:删除存在的库
mysql> drop database test111;
Query OK, 0 rows affected (0.01 sec)
删除不存在的库
mysql> drop database test111;
ERROR 1008 (HY000): Can't drop database 'test111'; database doesn't exist
//发生错误,不能删除'test111'数据库,该数据库不存在
if exists 判断数据库是否存在,不存在也不产生错误
mysql> drop database if exists drop_database;
Query OK, 0 rows affected, 1 warning (0.00 sec)//产生一个警告说明此数据库不存在
mysql> create database drop_database;
Query OK, 1 row affected (0.00 sec)
mysql> drop database if exists drop_database;
Query OK, 0 rows affected (0.00 sec)
4、连接数据库
语法:use <数据库名>
mysql> use test111
Database changed
mysql> use test111
ERROR 1049 (42000): Unknown database 'test111' //数据库不存在
使用USE语句为一个特定的当前的数据库做标记,不会阻碍您访问其它数据库中的表。下面的例子可以从db1数据库访问作者表,并从db2数据库访问编辑表:
mysql> USE db1;
mysql> SELECT author_name,editor_name FROM author,db2.editor
-> WHERE author.editor_id = db2.editor.editor_id;
USE语句被设立出来,用于与Sybase相兼容。
5、查看当前选择的数据库
语法:mysql> select database();
MySQL中SELECT命令类似于其他编程语言里的print或者write,你可以用它来显示一个字符串、数字、数学表达式的结果等等。
下面看下如何使用MySQL中SELECT命令的特殊功能
1.显示MYSQL的版本
mysql> select version();
+------------+
| version() |
+------------+
| 5.7.29-log |
+------------+
1 row in set (0.00 sec)
2. 显示当前时间
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2020-06-10 15:45:45 |
+---------------------+
1 row in set (0.00 sec)
3. 分别显示年月日
mysql> SELECT DAYOFMONTH(CURRENT_DATE);
+--------------------------+
| DAYOFMONTH(CURRENT_DATE) |
+--------------------------+
| 10 |
+--------------------------+
1 row in set (0.00 sec)
mysql> SELECT MONTH(CURRENT_DATE);
+---------------------+
| MONTH(CURRENT_DATE) |
+---------------------+
| 6 |
+---------------------+
1 row in set (0.00 sec)
mysql> SELECT YEAR(CURRENT_DATE);
+--------------------+
| YEAR(CURRENT_DATE) |
+--------------------+
| 2020 |
+--------------------+
1 row in set (0.00 sec)
4.显示字符串
mysql> SELECT "Hello World";
+-------------+
| Hello World |
+-------------+
| Hello World |
+-------------+
1 row in set (0.00 sec)
5.计算器功能
mysql> select ((5 * 5) / 10 ) + 25;
+----------------------+
| ((5 * 5) / 10 ) + 25 |
+----------------------+
| 27.5000 |
+----------------------+
1 row in set (0.00 sec)
6. 串接字符串
select CONCAT(f_name, " ", l_name)
AS Name
from employee_data
where title = 'Marketing Executive';
+---------------+
| Name |
+---------------+
| Monica Sehgal |
| Hal Simlai |
| Joseph Irvine |
+---------------+
3 rows in set (0.00 sec)