数据库 MySQL part1
数据库介绍
数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合。数据库中的数据按一定的数学模型组织、描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并可为各种用户共享。
关系数据库: MySql ,Oracle, sql server , db2 ,sqlite,
非关系数据库: redis mongodb
MySQL数据库
安装
windows上安装略
linux上安装略
启动
略
端口号3306
设置密码
1 mysqladmin -uroot password '123' #设置初始密码,初始密码为空因此-p选项没有用
2 mysqladmin -u root -p123 password '1234' #修改root用户密码
登录数据库
1 mysql #本地登录,默认用户root,空密码,用户为root@127.0.0.1
2 mysql -uroot -p1234 #本地登录,指定用户名和密码,用户为root@127.0.0.1
3 mysql -uroot -p1234 -h 192.168.31.95 #远程登录,用户为root@192.168.31.95
SQL语句
SQL语句:结构化语句,SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。几乎所有的关系型数据库都有对SQL语句的支持
SQL语句规范:
1、不区分大小写(命令建议大写,原因在于,在SQL解析的过程中,数据库会自动将小写的命令转换成大写,当有大批量SQL语句操作的时候,转换也会产生一定的开销)
2、以分号作为结束符号
3、注释(单行--,多行/* */)
SQL语句操作对象:数据库的操作、数据表的操作、表记录的操作
数据库的操作
1、查看所有的数据库
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sakila |
| sys |
| world |
+--------------------+
6 rows in set (0.00 sec)
2、创建数据库(即在磁盘上创建一个对应的文件夹)
语法:create database [if not exists] db_name [character set xxx];
命令 可选判断 数据库名 数据库的字符编码
mysql> CREATE DATABASE IF NOT EXISTS student CHARACTER SET utf8;
Query OK, 1 row affected (0.01 sec) mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sakila |
| student |
| sys |
| world |
+--------------------+
7 rows in set (0.00 sec)
3、查询一个数据库的创建方式(创建命令)
语法:show create database db_name ;
命令 数据库名
mysql> SHOW CREATE DATABASE student;
+----------+------------------------------------------------------------------+
| Database | Create Database |
+----------+------------------------------------------------------------------+
| student | CREATE DATABASE `student` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+------------------------------------------------------------------+
1 row in set (0.04 sec)
4、修改数据库字符编码
语法:alter database db_name character set gbk;
命令 数据库名 修改字符编码
mysql> ALTER DATABASE student CHARACTER SET gbk;
Query OK, 1 row affected (0.01 sec) mysql> SHOW CREATE DATABASE student;
+----------+-----------------------------------------------------------------+
| Database | Create Database |
+----------+-----------------------------------------------------------------+
| student | CREATE DATABASE `student` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec) #注:修改数据库名字,直接找到该数据库文件夹,修改文件夹名字
5、删除数据库
mysql> DROP DATABASE student;
Query OK, 0 rows affected (0.00 sec) mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sakila |
| sys |
| world |
+--------------------+
6 rows in set (0.00 sec)
6、使用数据库(即切换数据库,进入到数据库内)
mysql> USE mysql;
Database changed
mysql> SELECT database();
+------------+
| database() |
+------------+
| mysql |
+------------+
1 row in set (0.00 sec)
-- 注意:进入到某个数据库后没办法再退回之前状态,但可以通过use进行切换
查看当前使用的数据库 select database();
数据表的操作
表内的列:字段
表内的行:表记录
1、创建一个表(进入库里):最后一个字段不加逗号结束
语法:create table table_name(
字段名 字段数据类型 [约束] ,
字段名 字段数据类型 [约束] ,
字段名 字段数据类型 [约束] ,
....
字段名 字段数据类型 [约束] ) [character set xxx];
约束: (not null + unique就等于主键),约束不止这三个
主键(primary key):非空 且 唯一
not null: 非空约束
unique: 唯一约束
mysql> CREATE DATABASE teachers;
Query OK, 1 row affected (0.00 sec) mysql> USE teachers;
Database changed mysql> CREATE TABLE teacher1(
-> id INT primary key,
-> name VARCHAR(20) not null,
-> age INT,
-> birth DATE);
Query OK, 0 rows affected (0.51 sec)
2、查看数据库的表
mysql> SHOW TABLES;
+--------------------+
| Tables_in_teachers |
+--------------------+
| teacher1 |
+--------------------+
1 row in set (0.00 sec)
3、查看表结构
mysql> DESC teacher1;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(20) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
| birth | date | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
4、查看创建表命令
mysql> SHOW CREATE TABLE teacher1;
+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| teacher1 | CREATE TABLE `teacher1` (
`id` int(11) NOT NULL,
`name` varchar(20) NOT NULL,
`age` int(11) DEFAULT NULL,
`birth` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
5、增加列(字段):可以增加多个列,类似于表创建的格式。
语法:alter table tab_name add [column] 列名 类型 [完整性约束条件] [first|after 字段名];
命令 表名 添加 列 定义列位置,first最前边,after在某个字段之后
mysql> ALTER TABLE teacher1 ADD COLUMN sex INT;
Query OK, 0 rows affected (0.58 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC teacher1;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(20) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
| birth | date | YES | | NULL | |
| sex | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
注:COLUMN可以省略
mysql> ALTER TABLE teacher1 ADD addr VARCHAR(20) first;
Query OK, 0 rows affected (0.53 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC teacher1;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| addr | varchar(20) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | |
| name | varchar(20) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
| birth | date | YES | | NULL | |
| sex | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
6、修改一列类型
语法:alter table tab_name modify 列名 类型 [完整性约束条件] [first|after 字段名];
mysql> ALTER TABLE teacher1 MODIFY sex CHAR AFTER id;
Query OK, 0 rows affected (0.82 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC teacher1;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| addr | varchar(20) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | |
| sex | char(1) | YES | | NULL | |
| name | varchar(20) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
| birth | date | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
7、修改列名
语法:alter table tab_name change [column] 列名 新列名 类型 [完整性约束条件] [first|after 字段名];
mysql> ALTER TABLE teacher1 CHANGE birth birthday DATE;
Query OK, 0 rows affected (0.12 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC teacher1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| addr | varchar(20) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | |
| sex | char(1) | YES | | NULL | |
| name | varchar(20) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
| birthday | date | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
8、删除一列
语法:alter table tab_name drop [column] 列名;
mysql> ALTER TABLE teacher1 DROP sex;
Query OK, 0 rows affected (0.50 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC teacher1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| addr | varchar(20) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | |
| name | varchar(20) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
| birthday | date | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
9、修改表名
语法:rename table 表名 to 新表名;
mysql> RENAME TABLE teacher1 to teacher;
Query OK, 0 rows affected (0.14 sec) mysql> DESC teacher1;
ERROR 1146 (42S02): Table 'teachers.teacher1' doesn't exist
mysql> DESC teacher;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| addr | varchar(20) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | |
| name | varchar(20) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
| birthday | date | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
10、修该表所用的字符集
语法:alter table 表名 character set 编码;
mysql> ALTER TABLE teacher CHARACTER SET gbk;
Query OK, 0 rows affected (0.09 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> SHOW CREATE TABLE teacher;
+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| teacher | CREATE TABLE `teacher` (
`addr` varchar(20) CHARACTER SET utf8 DEFAULT NULL,
`id` int(11) NOT NULL,
`name` varchar(20) CHARACTER SET utf8 NOT NULL,
`age` int(11) DEFAULT NULL,
`birthday` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
11、删除除表
语法:drop table table_name
mysql> DROP TABLE teacher;
Query OK, 0 rows affected (0.19 sec) mysql> SHOW TABLES;
Empty set (0.00 sec)
补充:MySQL表数据类型
MySQL支持多种数据类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型
数值类型

日期/时间类型
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

字符串类型
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。

CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
CHAR:指定字符个数
VARCHAR:最大长度
BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。
BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。
有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求。
数据库 MySQL part1的更多相关文章
- MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限
1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Pas ...
- Robot Framework-DatabaseLibrary数据库(MySql)
Robot Framework-Mac版本安装 Robot Framework-Windows版本安装 Robot Framework-工具简介及入门使用 Robot Framework-Databa ...
- paip.导入数据英文音标到数据库mysql为空的问题之道解决原理
paip.导入数据英文音标到数据库mysql为空的问题之道解决原理 #---原因:mysql 导入工具的bug #---解决:使用双引号不个音标括起来. 作者 老哇的爪子 Attilax 艾龙, E ...
- paip.解决 数据库mysql增加列 字段很慢添加字段很慢
paip.解决 数据库mysql增加列 字段很慢添加字段很慢 #环境如下: mysql5.6 数据仅仅3w alter table xxx add column yyy int default ...
- Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、oracle...)间进行数据的传递
http://niuzhenxin.iteye.com/blog/1706203 Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql.postgresql.. ...
- 数据库MySQL多个数据库服务冲突
一.目标名称 MySQL 二.目标版本 mysql-5.6.24-win32.1432006610.zip 三.环境信息 系统:windows 7 旗舰版 防火墙:关闭 —— 注意:如果防火墙不关闭 ...
- paip.将数据导入到在英语语音数据库mysql道路解决空原则问题
paip.将数据导入到在英语语音数据库mysql道路解决空原则问题 #---原因:mysql 导入工具bug #---解决:不要使用双引号括注音. 笔者 老哇爪 Attilax 艾龙. EMAIL: ...
- Yii Framework2.0开发教程(5)数据库mysql性能
继续<Yii Framework2.0开发教程(3)数据库mysql入门> 首先给予一定的尊重yii2数据库支持引进 Yii 基于 PHP's PDO一个成熟的数据库访问层的建立.它提供了 ...
- cpanel导入大数据库(mysql)的方法
phpmyadmin是一件很方便的在线管理MySQL数据库的工具,但对于较大的数据库的导出和导入却很容易出错.特别是导入工作,通常5M已经是它的极限了.这里,主要介绍一下如何通过cPanel导入大型的 ...
随机推荐
- 初识Scrum
团队作业起步 一.团队 队名:想吃蛋炒饭 成员: 许俊杰 肖豪雄 王重和 罗艺璇 曾舒妮 也许是我们队长的人的博客:许俊杰的博客 二.Scrum学习心得 Scrum是迭代式增量软件开发过程,通常用于敏 ...
- Fiori Launchpad Tile点击后跳转的调试技巧
在SAP Fiori launchpad 里点击某个tile之后,后台会计算出跳转的目标url返回给前台. 下图中一个个白色的方框就成为tile.每个tile点击之后,会打开一个对应的Fiori应用. ...
- python入门8 输入输出
输入 input() 输出 print() #coding:utf-8 #/usr/bin/python """ 2018-11-03 dinghanhua 输入输出 & ...
- bootstrap table 主子表 局部数据刷新(刷新子表)
1.主表中设置data-detail-view="true",启用主子表模式: <table class="table table-striped" wi ...
- Hive创建外部表以及分区
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/sheismylife/article/details/27874943 创建带分区的外部表 创建外部 ...
- 【洛谷5292】[HNOI2019] 校园旅行(思维DP)
点此看题面 大致题意: 给你一张无向图,每个点权值为\(0\)或\(1\),多组询问两点之间是否存在一条回文路径. 暴力\(DP\) 首先,看到\(n\)如此之小(\(n\le5000\)),便容易想 ...
- HDU 5687 Problem C 【字典树删除】
传..传送:http://acm.hdu.edu.cn/showproblem.php?pid=5687 Problem C Time Limit: 2000/1000 MS (Java/Others ...
- TDD: 解除依赖
1 A类依赖B 类,可以把B类提取成IB接口,解除AB 之间的依赖关系. 通过创建实现了IB接口的BStub 装代码,可以模拟B类进行测试. 这是针对接口编程的典型.适合构造代价大,变化多的情况.应 ...
- MQTT初始篇笔记整理
MQTT简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输),基于TCP/IP 协议栈而构建,虽然叫消息队列遥测传输,但是她与消息队列毫无关系,她 ...
- Unity3D usage Experience
I have been using Unity3D to make game for half one year. I began to lean Unity3D with some books, o ...