迎接矫正,mysql基础教程

MySQL安装落成将来,基本操作有:1.开立数据库   2.去除数据库   
3.改动数据库

1.1基本概念:

数据库操作:

数据库介绍

1.创立数据库

Mysql是一种关系型数据库,将数据存放在不相同的表格中,表格中的要素有:

1。创设数据库,并修改默许字符编码

数据库(database,DB)是指短时间积存在电脑内的,有集体,可共享的数目的聚众。数据库中的数据按一定的数学模型协会、描述和仓储,具有较小的冗余,较高的数额独立性和易扩张性,并可为各个用户共享。

在MySQL中,创立数据库的命令为   create database  数据库名;   
其中可在数据库名前加上  if not exists,表示不另行创立同名数据库。

?列:表中的一个字段,一个列包括了一致数据类型的数量。

create database 数据库名 [charset=字符编码];

关周全据库: MySql ,Oracle, sql server , db2 ,sqlite,

2.去除数据库

?行:表中的数码是按行存储的,行是表中的一个笔录。若是将表想象为网格,网格中垂直的列为表列,水平作为表行。

ee:

非关全面据库: redis mongodb

在已有些数据库中可选用一个不行的数据库删除,命令为   drop database
数据库名;   也可在数据库名前添加 if exists,表示删除已存在的数据库。

?主键:数据库中的标识列,主键具有唯一性且不能够为NULL。

create database dog charset=utf8;

so无所谓。。。

3.查询数据库

1.2mysql语句规范:

ps:

 

查询数据库的编码方式可用   show create database 数据库名;   
若要查询数据库中的表,则可用    show tables in 数据库名。

1)Sql语句必须以;停止;

1.1。如若数据库已经存在,那么会报错。可以透过上边的语句来创设数据库:

MySQL数据库

成立数据库后可对数据库举行操作,创造数据表:首先输入指令   use
数据库名;   然后输入指令    create table 数据声明(数据名1
数据格式,数据名2 数据格式……);

2)保留主要字不区分轻重缓急写;

create database if not exists 数据库名;

安装

数量格式大约分成二种档次:1.数字类型 2.时日项目 3.文本类型

3)可轻易加盟空白和换行符;

实在就是在创造数据库的时候判断一下是或不是此前早已存在该数据库了。

windows上设置略

1.数字类型:TINYINT                     
默许带符号,若不带符号则在其后拉长 UNSIGNED 表示  不含有负数   (下同)

4)注释的运用:单行注释格式为:【–注释】,多行注释格式为【/*注释*/】。

1.2。即使想要创造一个用关键字命名的数据库,可以用反引号来创造。反引号的义务在数字1的左侧,

linux上设置略

                     SMALLINT            

1.3 mysql的命令行操作命令:

肯定要在波兰语半角格式下利用才生效。

启动

                     MEDIUMINT            

1)登录mysql:【mysql  -h 主机名 -u 用户名 -p】-h表示要三番五次到哪一台主机的

ee:

                     INT或INGEEGER      

mysql数据库,当登录当前主机时可粗略;-u指定用户名,默许为root;-p为设置时设定的密码,如若为空可以概括。

create database `database`;

端口号3306

                     BIGINT

示例:

2。查询数据库

设置密码

                     FLOAT                        
使用时应当在其后加(a,b)表示整数和小数的位数

报到本机mysql数据库:【mysql -u root -p】

show databases;

1 mysqladmin -uroot password '123'   #设置初始密码,初始密码为空因此-p选项没有用
2 mysqladmin -u root -p123 password '1234' #修改root用户密码

                     DOUBLE                      同上

签到远程主机mysql数据库:【mysql -h 192.168.10.111 -u root -p】

ps:

登录数据库

2.时刻项目:DATE                           年-月-日

报到本机mysql数据库直接加密码:【mysql -u root -p11111】

database是复数的,不然会报错。

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

                     TIME                            时:分:秒

2)创立/删除数据库:创造:【create database 数据库名;】删除:【drop
database 数据库名】

3。彰显数据的创办语句,能够看到编码格式的

忘却密码1:从删库到跑路

                     YEAR                           年份

示例:

show create database 数据库名;

                     DATETIME                   年-月-日 时-分-秒

创立一个名为test的数据库:【create database test;】

ee:

遗忘密码2:越过授权库

                     TIMESTAMP                两年华之间间隔的秒

除去一个名为test的数据库:【drop database test;】

997755.com澳门葡京 1

3.文本类型:CHAR                           定长字符

3)查询数据库/数据表:

4。更改数据库

 

                     VARCHAR                    变长字符

?查询数据库:【show
databases;】在通过该命令查询时意识在除自己成立的数据库之外,还有八个默许的库,查找有关材料后对其展开了认识,分别是:information_schema库,该库保存着关于MySQL服务器所有限支撑的有着其余数据库的消息,如数据库名,数据库的表等;mysql库,mysql的骨干数据库,存储了数据库的用户、权限设置、关键字等mysql自己须要使用的操纵和管理新闻;performance_schema库,该库主要用来采集数据库服务器性能参数。

字符编码和数据库引擎

SQL语句

                     TINYBLOB                   
不超过255个字符的二进制字符

?查询数据表:【show
tables】,注意查询数据表应该在接纳好了数据库之后展开,假设是在进入mysql后未选用特定数据库使用此命令,则不行。

 alter database 数据库名 [目的参数]

SQL语句:结构化语句,SQL是专为数据库而树立的操作命令集,是一种作用齐全的数据库语言。大约拥有的关系型数据库都有对SQL语句的支撑

                     TINYTEXT                     短文本字符串

?查询表结构:【desc 表名】。

ee:

SQL语句规范:
1、不区分轻重缓急写(命令指出大写,原因在于,在SQL解析的进度中,数据库会活动将小写的指令转换成大写,当有多量SQL语句操作的时候,转换也会发出一定的开发)
2、以分行作为完成符号
3、注释(单行–,多行/* */)

                     BLOB                             二进制长文本数据

4)选拔数据库:有二种艺术,分别为:1.登录时直接指定:【mysql -D
所挑选的数据库名 -h 主机名 -u 用户名 -p】2.登录后选用操作的数据库:【use
数据库名】

alter database dog charset=gbk;

SQL语句操作对象:数据库的操作、数据表的操作、表记录的操作

                     TEXT                             长文本数据

示例:

5。删除数据库

数据库的操作
1、查看所有的数据库

                     MEDIUMBLOB              二进制中等文本数据

登录时:【mysql -D testdb -u root -p】,或者【mysql -D testdb -u root
-p11111】

drop database 数据库名;

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| world              |
+--------------------+
6 rows in set (0.00 sec)

                     MEDIUMTEXT              中等文本数据

登录后:【use testdb】

ee:

 

                     LONGBLOB                  二进制极大文本数据

增补,另一种登录时的抉择,更简约:【mysql -u root -p11111 testdb】

drop database dog;

2、制造数据库(即在磁盘上创设一个对应的文本夹)

                     LONGTEXT                  极大文本数据

5)创立/删除数据表:

ps:

语法:create  database  [if not exists]  db_name  [character set
xxx];

所有数据中都可以设置空与非空 即 null 与 not
null,若数据可以为空则可以在数据类型后拉长null,也可不加;若无法为空,则必须加not
null;

?成立数据表:【create table 表名
(列申明)】列的扬言指定了各列的习性,平时包蕴以下几点要素:

万一除去不设有的数据库会报错,最好是在操作在此以前先判断一把。

   命令      可选判断    数据库名   数据库的字符编码

数据表创设完结后可以向数据表中添加新的列,命令格式为               alter
table 表名 add column 新列名 数据格式;   

1.表名;

drop database if exists 数据库名;

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)

万一须要向数据表中插入一条新的数据时,可用命令                         
insert 表名(列名1,列名2……) values(数据一,数据二……);          
  (必须逐项对应)

2.表中的各列名;

6。选用数据库

 

或者                                                                    
                                 insert 列名 set 列名一 = 数据一,列名二
= 数据二,……

3.数据类型:mysql中定义了多少个大类的数据类型,具体分类见下方:

use 数据库名;

3、查询一个数据库的创设格局(创建命令)

当发现数据表中多余的数目时,能够去除多余的数码,命令格式为    delete
from 表名 where 条件;

4.是不是为主键;

ee:

语法:show  create  database  db_name ;

当发现表中数据须求更新时,可以用创新数据的命令,命令格式为    update
表名 set 列名 = 新数据 where 条件;

5.是或不是可以为NULL;

use dog;

   命令          数据库名

若有多条数据须求立异时,可以运用when then 达到,命令格式为     update
表名 set 列名 = case when 条件 then 新数据 when 条件 then 新数据 ……
end;

整型:(无符号通过unsigned关键字标识)

多少库表的操作

mysql> SHOW CREATE DATABASE student;
+----------+------------------------------------------------------------------+
| Database | Create Database                                                  |
+----------+------------------------------------------------------------------+
| student  | CREATE DATABASE `student` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+------------------------------------------------------------------+
1 row in set (0.04 sec)

察觉数目不相符数据类型时,能够更改数据类型,命令格式为            alter
table 表名 modify column 列名 新数据格式;

类型 字节 范围(有符号) 范围(无符号)

关系: 行—记录 
列—字段

迎接矫正,mysql基础教程。 


tinyint 1 -128~127 0~255

1。创建表

4、修改数据库字符编码

SELECT的应用

smallint 2 -32768~32767 0~65535

create table 表名(

语法:alter  database  db_name  character set gbk;

一.函数应用

mediumint 3 -8388608~8388607 0~16777215

主键字段 数据类型1 [null/not
null] [default] [auto_increment] [primary key],

     命令         数据库名    修改字符编码

1.求平均数:select avg(列名 from 表名;                      也可在avg(
  )后加as
你愿意见到的平均数列名,使表格彰显出来的是as前面的字符而不是avg(  
),下同

int 4 -2147483648~2147483647 0~4294967295

非主键字段 数据类型2,

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)

#注:修改数据库名字,直接找到该数据库文件夹,修改文件夹名字

2.求和:       select sum(列名) from 表名;

bigint 8 +-9.22*10的18次方 0~1.84*10的19次方

………..

 

3.求最大值    select max(列名) from 表名;

浮点型:

);

5、删除数据库

4.求微细值    select min(列名) from 表名;

类型 字节 含义 用途

ps:

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)

二.查找

float 4 float(m,d)最大位数m位,小数点后d位 单精度浮点数

主键:非空唯一

 

1.select 要寻找的列名 from 表名 where 条件;             
要物色的列名处可输入*表示所有列

double 8 double(m,d)最大位数m位,小数点后d位 双精度浮点数

数据库中只有字符,没有字符串的定义

6、使用数据库(即切换数据库,进入到数据库内)

2.select 要寻找的列名 from 表名 where 列名<值1 or 列名 >值2;    
     查找列中小于值1或者当先值2的富有数据

decimal decimal(m,d),若m>d,则为m+2;否则为d+2 适用于高精度 小数

用关键字做表名需求加反引号,用关键字做字段名急需加反引号,跟上边用关键字做数据库名做法一致.

mysql> USE mysql;
Database changed
mysql> SELECT database();
+------------+
| database() |
+------------+
| mysql      |
+------------+
1 row in set (0.00 sec)

3.select 要物色的列名 from 表名 where 列名>值1 and 列名 <值2;    
 
查找值1与值2之间的多寡,即使急需寻找等于值1,值2的数量就在<,>后加= 

日子和时间项目:

数据类型: int /char(定长)
/varchar(可变长)/text(大文本)/decimal(总位数,小数点后位数)

 

   select 要摸索的列名 from 表名 where 列名between 值1 and 值2;    
查找值1与值2之间的多少

类型 字节 格式 示例

ee:

— 注意:进入到某个数据库后不可以再后退以前情状,但可以通过use举办切换

4.select 要寻找的列名 from 表名 where 列名 like a_;        
查找方式为a_ 的数据,_代表一个未指定字符

DATE 3 YYYY-MM-DD 2017-07-22

1.1 电话号码—varchar
//性别—char //年龄—int/tinyint(max:255)
//照片—不用binary,数据中只存储照片的路子

查阅当前应用的数据库 select database();

   select 要摸索的列名 from 表名 where 列名 like a%;    
查找方式为a%的多少,%代表七个未指定字符,不计个数

TIME 3 HH:MM:SS 15:47:30

薪水—decimal
//QQ—varchar //手机号—char

 

 

YEAR 1 YYYY 2017

1.2 姓名—not null // 地址—not null //邮件—null //成绩—null

数据表的操作

DATETIME 8 YYYY-MM-DD HH:MM:SS 2017-07-22 15:47:30

2。查看表

表内的列:字段

TIMESTAMP 4 YYYYMMDD HHMMSS 20170722 154730

show tables;

表内的行:表记录

字符串类型:

ps:

1、创制一个表(进入库里):最后一个字段不加逗号截止

类型 字节 含义

tables是复数的。

 语法:create  table  table_name(

CHAR 0-255;char(m)表示存储字符长度为m,不够则补空格,超出则截取m个
定长字符串

3。查看已创制表(可展现表的详细信息)

      字段名 字段数据类型 [约束] ,
      字段名 字段数据类型 [约束] ,
      字段名 字段数据类型 [约束] ,
      ….
      字段名 字段数据类型 [约束] )  [character set xxx];

VARCHAR 0-65535 变长字符串

show create table 表名 \G;

封锁: (not null + unique就等于主键),约束不断那七个
  主键(primary key):非空 且 唯一
  not null: 非空约束
  unique: 唯一约束

TINYBLOB 0-255 短二进制字符串

ee:

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)

BLOB 0-65535 二进制方式的文本数据

show create table dog \G;

 

MEDIUMBLOB 0-16777215 二进制格局的中级文本数据

ps:

2、查看数据库的表

LONGBLOM 0-4294967295 二进制格局的长文本数据

\G: 表示table字段和create table字段的排列格局改为竖立的格局

mysql> SHOW TABLES;
+--------------------+
| Tables_in_teachers |
+--------------------+
| teacher1           |
+--------------------+
1 row in set (0.00 sec)

TINYTEXT 0-255 短文本字符串

未使用\G 时的表的神工鬼斧截图:

 

TEXT 0-65535 文本字符串

997755.com澳门葡京 2

3、查看表结构

MEDIUMTEXT 0-16777215 中等本文字符串

从创制数据库到创设表经过截图:

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)

LONGTEXT 0-4294967295 长文本字符串

997755.com澳门葡京 3

 

示例:

997755.com澳门葡京 4

4、查看创制表命令

【create table testworkers

漏了一些,还有就是能明了成立表的名字

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)

(

 4。突显表结构

 

id int unsigned not null auto_increment primary key,

997755.com澳门葡京,describe 表名;

5、增添列(字段):可以追加七个列,类似于表创造的格式。

name char(8) not null,

或者应用缩写情势的吩咐查询,效果是一致的:

语法:alter  table  tab_name  add  [column]  列名  类型
[完整性约束规范] [first|after 字段名];

sex char(6) not null,

desc 表名;

     命令       表名    添加     列
                  定义列地方,first最前边,after在某个字段之后

age tinyint unsigned not null

ee:

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    |       |
+-------+-------------+------+-----+---------+-------+

);】

desc dog;

 

?删除数据表:【drop table 表名;】

997755.com澳门葡京 5

注:COLUMN能够省略

示例:

5。删除表

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)

删除testworkers表:【drop table testworkers;】

drop table 表名;

 

6)数据的增删改查等操作:

可以去除多个表,当有外键关系约束时,要小心删除顺序,先删除包蕴外键的从表,再删除主表。

6、修改一列类型

?插入数据:【insert into 表名 [(列名1,列名2……列名n)] values
[(值1,值2……值n)]】。有以下几点须要留意:

drop table 表名1,表名2,…;

语法:alter  table  tab_name  modify  列名  类型  [完整性约束规范]
[first|after 字段名];

1.into得以简不难单;

ee:

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)

2.字符串需求运用’ ’或者” ”;

drop table dog;

 

3.列名可以简简单单,可是此时必须比照各列的概念顺序来插入数据;

drop table t1,t2,t3;

7、修改列名

4.方可只插入部分列的数量,其他没有现身的列将被给予默许值;

ps:

语法:alter  table  tab_name  change  [column]  列名  新列名  类型
 [完整性约束规范] [first|after 字段名];

5.可以通过一条语句五次性插入多行数据,格式为【insert into 表名values
(值1,值

latin 2个字符一个中文

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)

2,值3),(另一个列1的值,另一个列2的值,另一个列3的值); 】;

utf8 1个字符一个国语

 

5.得以应用set子句来插入数据,格式为【insert into set
列名1=’值1’,列名2=’值2’】;

latin编码环境下输入汉语会招致无效值

8、删除一列
语法:alter  table  tab_name  drop  [column] 列名;

6.auto_increment标识的字段可以不用赋具体值,系统为自行按照前一条目标值进行自增。

6。查询字符编码:

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)

示例:

show variables like ‘character_set_%’;

 

不难列名的插入:【insert into testworkers values
(10001,”axx”,”male”,35);】

997755.com澳门葡京 6

9、修改表名
语法:rename  table  表名  to  新表名;

一些列的插入:【insert testworkers (name,sex,age) values
(bxx,”female”,27);】

 

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)

一遍性插入多列:

 数据操作

 

【insert into testworkers values
(10003,’cxx’,’male’,28),(10004,’dxx’,’male’,40);】

1。插入数据(增)

10、修该表所用的字符集
语法:alter  table  表名  character  set  编码;

四遍性插入多列,同时只对一些列赋值:

insert into 表名(字段名1,字段名2,……,字段名n)
values(值1,值2,……,值n)

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)

【insert into testworkers (id,name,sex) values
(10005,’cxx’,’male’),(10006,’dxx’,’male’);】

要么:(必须插入的值和数据表的字段顺序和个数都如出一辙):

 

利用set子句插入,同时只对有些列赋值:【insert into testworkers set
name=’exx’,age=’50’;】

insert into 表名 values(值1,值2,……,值n)

11、删除除表

?查询数据:

机关增进主键id插入数据:(主键必须安装为null):

语法:drop table table_name

1.查询表的全体内容:【select * from 表名;】

insert into 表名(id,字段名2,……,字段名n) values(null,值2,……,值n)

mysql> DROP TABLE teacher;
Query OK, 0 rows affected (0.19 sec)

mysql> SHOW TABLES;
Empty set (0.00 sec)

2.查询单个列:【select 列名 from 表名;】

ps:

  

3.查询多个列:【select 列名1,列名2……列名n from 表名;】

细节:

补充:MySQL表数据类型

4.查询列并限制前n行:【select 列名from 表名 limit
n;】,查询列并限量从m+1行开头的n行:【select 列名from 表名 limit m
offset n;】

1.1。插入的字段可以和数据库中的字段顺序不一样,不过值必须和插入的字段的逐一保持中度一致,否则会报错。

MySQL援救多种数据类型,大致可以分成三类:数值、日期/时间和字符串(字符)类型

5.只询问不相同的值:【select distinct 列名 from
表名;】注意distinct成效于其后有所的列,不是单列,当功效于如下多列时【select
distinct 列名1,列名2 from
表名】,列1和列2同时比较,唯有当两行的列1和列2都相同时才不会列出,有一个如出一辙则会列出。

ee:

数值类型

6.询问单个并排序:使用order by 子句:【select 列名 from 表名 order by
列名;】注意那里的八个列名并不一定须求平等,且order子句一定在指令的最末尾。

insert into dog(id,name) values(1,’tom’);

997755.com澳门葡京 7

7.查询几个列并排序:【select 列名1,列名2……列名n from 表名 order by
列名x
列名y;】要留意的是:排序按语句的顺序举行,当列x的兼具数据分歧时,列名y排序无效;当列x的数额有重复时,则根据列y的一一举办排序。

1.2。插入字段是足以几乎的,插入的值和数据表的字段顺序和个数都一律

日期/时间项目

8.查询两个列并按列的地方排序:【select 列名1,列名2……列名n from 表名
order by x
y;】注意那种措施只适用于排序的列在select的列之中,且列的职位不是指完全数据表中该列的职位号,而是指select语句后的地点号。

ee:

意味着时间值的日期和岁月档次为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

9.询问并降序排序:当仅用order
by子句时,数据的排序以升序举办,若是须求多少按降序排序来输出,则下令格式为【select
列名1,列名2……列名n from 表名 order by 列名x desc;】

insert into dog values(1,’tom’);

各样日子项目有一个有效值范围和一个”零”值,当指定不合规的MySQL不可以代表的值时采纳”零”值。

10.特定规则查询:使用where子句:【select 列名1,列名2……列名n from
表名 where
条件;】,那里的准绳是指由where子句的操作符所定义的规则表达式,where子句的操作符如下,意思如字面所示。

1.3。自动拉长的主键id,在插入数据时得以id字段用null表示

997755.com澳门葡京 8

= != < <= > >= !< !> between is null

ee:

 

11.组合条件查询:使用where子句搭配逻辑操作符,逻辑操作符首要有

insert into dog values(null,’tom’);

字符串类型

and or in not

1.4。插入默许值(字段有指明使用默认值的时候)

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

and和or分别代表逻辑上的与和或,然而要注意and的预先级高于or,在组合使用时要留意搭配顺序。in操作符用于指定一个限量,in操作符后跟由逗号分隔的官方值,这一个值必须括在圆括号中。not操作符表示否认其后所跟的准绳,其尚无单独行使。

ee:

997755.com澳门葡京 9

操作符优先级示范:

insert into dog values(2,default);

CHAR和VARCHAR类型类似,但它们保存和搜索的办法分歧。它们的最大尺寸和是或不是底部空格被保存等地点也不相同。在储存或探寻进程中不开展高低写转换。

有那般一条命令必要:查询testworkers表的职工工号<10003照旧工号>10004的还要年纪>30的员工的人名。若是根据下边命令1的法子来写:

2。删除数据(删)

CHAR:指定字符个数

命令1:【select name from testworkers where id<10003 or id>10004
and age>30;】

delete from 表名 where 条件

VARCHAR:最大尺寸

则该命令中即使or写在前边,可是其实履行中and的优先级更高,会先执行and操作符,因而该命令的趣味实际上是:查询testworkers表的工号>10004且年纪>30的员工工号以及工号<10003的职工工号。

delete和drop的区别

BINARY和VARBINARY类类似于CHAR和VARCHAR,差其余是它们含有二进制字符串而不要非二进制字符串。也就是说,它们含有字节字符串而不是字符字符串。

化解措施是应用()来将操作符举办明确的分组,如下:

delete代表将表中的多寡总体刨除,但是表的字段仍存在。

BLOB是一个二进制大对象,可以包容可变多少的数额。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大尺寸分化。

命令2:【select name from testworkers (where id<10003 or id>10004)
and age>30;】

drop表示表的享有信息全部被剔除。

有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这一个对应4种BLOB类型,有一致的最大尺寸和储存须求。

12.通配符查询:通配符是用来同盟一部分数码的特殊字符,平时代表着某种特殊情势,通过LIKE操作符搭配通配符可以查询某一类特定情势的数据,常用的通配符有:

auto_increment
这些机制,当表中的记录被删除时,自动拉长的笔录不将再是被剔除的记录的id号,

 

通配符 含义

被删除得那条记下可以经过数据库的日记苏醒

表记录的操作:下一天

% 任何字符出现任意次数

3。查询数据(查)

 

_ 任何字符出现一遍

select 列名 from 表名 [where 条件] [order by 排序 asc|desc] [limit
分页参数(起首地方,查询的记录数)];

[] 指定一个字符集

模糊查询:

留神:上述各类查询命令的方式只是每种方式的最基本处境,在其实使用中会出现多种形式一起利用的情状,要留意结合使用。

select 列名 from 表名 where 字段名1 like ‘%参数%’;

示例:

ps:

查询testworkers表的全体内容:【select * from testworkers;】

* 表示拥有字段 

询问testworkers表的全套工号:【select id from testworkers;】

asc 代表升序  

询问testworkers表的全部工号和姓名:【select id,name from testworkers;】

desc 代表降序

询问testworkers表的姓名列的第3行到第4行:【select name from testworkers
limit 2 offset 4;】

(默许是根据升序排列)

询问testworkers表的所有不相同年龄:【select distinct name from
testworkers;】

limit 的施用细节

询问testworkers表的岁数并按年龄进行升序排序:【select age from
testworkers order by age;】

ee:

询问testworkers表的员工姓名并按他们的岁数升序排序:【select name from
testworkers order by age;】

select * from dog limit 3;  #限制取前3条记下

查询testworkers表的员工工号、姓名和年龄,并按年龄进行排序,当年龄相同时则按照工号进行排序:【select
id,name,age from testworkers order by age,id;】

select * from dog limit 0,3;  #和上边的口舌等价

同上一条命令,用列的岗位表明:【select id,name,age from testworkers
order by 3,1;】

数据库中首先条记下的职位是标志为0.

询问testworkers表的员工工号和人名并按他们的年龄降序排序:【select
id,name from testworkers order by age desc;】

补充: mysql运算符

询问testworkers表的持有年龄小于40的员工工号和姓名并按年龄升序举办排序:【select
id ,name from testworkers where age<40 order by age;】

正如运算符:>, >=, <, <=, =, <>(不等于)

查询testworkers表的工号在10002和10004时期的职工工号:【select id from
testworkers where id between 10002 and
10004;】(输出10002、10003、10004,可知mysql对between语句的拍卖是一个富含两端的闭区间)

逻辑运算符:and,or,not

询问testworkers表的兼具工号小于10005的男性员工的工号和姓名,并按照他们的年纪举行降序排序:【select
id,name from testworkers where id<10005 and sex=’male’ order by age
desc;】

4。修改数据(改)

询问testworkers表的持有人名在为axx、或cxx、或、dxx之间的男性员工的工号和人名并根据年龄进行降序排序,当年龄相同时按照工号进行降序排序:【select
id,name from testworkers where name in (‘axx’,’cxx’,’dxx’) and not
sex=’female’ order by age desc,id desc;】

update 表名 set 字段名1=值1,字段名2=值2,字段名3=值3 where 条件

询问testworkers表的保盛名字以cx开端的职工的工号:【select id from
testworkers where name like ‘cx%’;】

有的题目:

?更新数据:

主键列输入的数值,分歧意为空;

创新所有行的某一单列:【update 表名 set 列名=新值;】

一个表不得以有四个主键,可是主键可以由多少个列组成;

革新所有行的多列:【update 表名 set
列名1=新值1,列名2=新值2……列名n=新值n;】

标识列(自动增加列)无法为字符数据类型(数字自动增加);

更新特定行的某一单列:【update 表名 set 列名=新值 where 更新标准;】

聚合函数

更新特定行的多列:【update 表名 set
列名1=新值1,列名2=新值2……列名n=新值n where 更新标准;】

sum(),avg(),max(),min(),count()

示例:

括号内带参数,参数是多少库表的字段名

将testworkers表的有所职工的性别改为male:【update testworkers set
sex=”male”;】

 

将testworkers表的兼具员工的年华改为0:【update testworkers set age=0;】

将testworkers表的所有工号小于等于10004的员工的年华改为30:【update
testworkers set age=30 where id<=10004;】

将testworkers表的具备姓名在axx-cxx之间的员工的年华改为35且性别改为female:【update
testworkers set age=35,sex=’female’ where name between ‘axx’ and
‘cxx’;】

?删除数据:

剔除所有行:【delete from
表名;】,一般当想要清空表时不会接纳上述命令,而是利用【turncate table
表名;】该命令比使用delete清空时更快。

删除特定行:【delete from 表名 where 删除条件;】

示例:

除去testworkers表的持有年龄为0的行:【delete from testworkers where
age=0;】

    删除testworkers表的全体内容:【truncate table testworkers;】

7)数据表的更改操作:

在意:上述6)的内容是对数据内容的操作,数据表本身格式不变,此部分的一声令下是对数码表格式的转移,和5)是同类型的操作。

表名修改:【rename 旧表名 to 新表名】

添加列:【alter table 表名 add 列名 列评释 after
插入地点;】after可以大约,当省略时表示在表的末尾添加列

修改列:【alter table 表名 change 列名称 列新名称 新表明;】

删除列:【alter table 表名 drop 列名称;】

示例:

将testworkers名称修改为test:【rename table testworkers to test;】

在testworkers表的结尾添加一列work_age:【alter table testworkers add
work_age tinyint unsigned;】

在testworkers表的age列之后新增一列department列:【alter table
testworkers add department varchar(100) not null after age;】

将testworkers表的id列修改为work_id,数据类型为smallint:【alter table
testworkers change id work_id smallint unsigned not null;】

删除testworkers表中的department列:【alter table testworkers drop
department;】

1.4 mysql脚本的利用:

sql脚本是含有一到多少个sql命令的sql语句,大家得以将那几个sql脚本放在一个文书文件中(称之为“sql脚本文件”),然后通过有关的下令执行那么些sql脚本文件,简单的领会sql即是sql语句的批处理文件。

示例:

1.创建sql脚本:vim test.sql;

2.对sql脚本进行编制,内容为:

create database test2;

use test2;

create table test

(

          id int unsigned not null  primary key,

          name char(8) not null,

          sex char(4) not null

);

3.执行sql脚本:mysql -u root -p11111 -e “source /root/test.sql”

4.查询检验:进入mysql后show
databases发现test2库已经创办,选择test2库后再show
tables命令可知test表也一度制造。

1.5 c/c++程序中通过mysql的c api对mysql进行增删改查的操作:

Mysql针对各样语言提供了编程接口以供在代码中贯彻对mysql数据库的拜会与操作,其中针对c有c
api,针对c++有Connector C++接口,其中c
api的选取广为人知,由此紧要学习了哪些使用c api在代码中对数据库进行操作。

参照链接:

Mysql的c api提供了触目皆是意义的构造和函数,其中相比较常用的有:

MYSQL结构,举办mysql操作的底蕴结构;

MYSQL_RES:结果集;

MYSQL_FIELD:列信息;

MYSQL_ROW:行信息;

mysql_real_connect( ):mysql数据库的连接;

mysql_init():mysql数据库的伊始化;

mysql_query():执行sql语句的函数,成立库、创造表、添加数量、查询数据都可用此函数完毕;

mysql_real_query():蕴涵二进制数据的操作必须用这些,其余real的速度更快;

mysql_store_result():查询结果的蕴藏;

mysql_num_fields():再次回到结果集的列的个数;

mysql_fetch_field():重返一个表列的新闻;

mysql_fetch_row():从结果集中获取下一行数据;

为了能周密了解代码中经过api对数据库控制的着力使用,我透过在linux环境下编制测试代码,并编译运行,通过对打印消息检查命令的周转境况,最终编译运行并通过测试,已毕对此部分情节的上学。

实际编写调试和表明步骤如下,测试代码另附:

1.代码编纂:vim test.cpp,编写c++代码文件。

2.代码编译:g++ test.cpp -o test
-lmysqlclient,这里要留意对mysql的操作须求编译环境看重,需添加-lmysqlclient链接mysql库编译才可由此。

3.代码执行:./test,执行编译链接后的可执行文件。

4.结实检测:

1)在代码中数据库的连天和创办通过函数的重回值举办认证,在命令行中输出音信。

2)创造了数据库之后,代码首先成立一个test3表并插入了三行新闻,通过输出音信可知此部分完成。

3)依据规则将test3表中的10087号员工的性别改为female、年龄改为33。

4)将10043号员工的新闻从表中删除。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website