- 首先呢,在MySQL环境中对输入的代码大小写并不敏感,也不做要求不会影响代码运行结果,但在程序执行的时候,如果你输入的是小写就会先转化为大写字母然后再去执行,但如果直接输入大写字母就会节省一个转化的时间, 在对时间要求非常严格时就能看出大写字母直接输入的重要性了。所以平时敲代码的时候就尽量敲大写字母喽~
常用的MySQL基本操作
- 数据库的基本操作有:创建、查看、选择、删除:
- 创建数据库:
CREATE DATACASE database_name;
----创建一个info的数据库病设置默认字符编码
CREATE DATABASE info DEFAULT CHARACTER SET “utf8”;
- 查看数据库:
SHOW DATABASES;
SHOW DATABASES;
- 选择数据库:
USE database_name;
选择使用已经创建好的数据库 info
USE info;
- 删除数据库:
DROP DATABASE database_name;
DROP DATABASE info;
- 创建表:
建好了数据库之后,就要选择一个数据库对它进行表的相关操作。表是数据在数据库中一种逻辑上的存储形式,和常见的电子表格类似,其中每一行代表一个记录,(也可以理解成一个数据成员),而记录的每一列代表一个字段,(也可以理解成数据成员的属性相关信息)。
表的基本操作有:创建、查看、修改、删除:
-
创建表:
CREATE TABLE table_name(.....);
----创建一个名为person的数据表
CREATE TABLE ‘person’(
id SMALLINT,
persname VARCHAR(20),
age TINYINT
); -
查看表:
SHOW TABLES
;
-------先选择数据库,再查看该数据库中都有哪些表(tables)
USE info;
SHOW TABLES;
那么如何查看这个数据表的具体信息呢?
-----先选择数据库,用
DESCRIBE
查看
USE info;
DESCRIBE **person**;
== (DESCRIBE table_name;)
如果想要查看得更详细,就用 SHOW CREATE TABLE
查看表中具体条目:
select from 表名 where id=2[and name=?] [or name=?];
多表查询关联
---------附表的主键是主表的附键
select * from info inner join hobby where info.id=hobby.id;
select info.name,score,hobby.hobname from info inner join hobby where info.id=hobo.id=hobby;
select i.name,score,h.hobname from info as i inner join hobby as h where i.id=h.id;
- 修改表:
修改数据表的名字 :
------ALTER TABLE old_table_name RENAME TO new_table_name;
ALTER TABLE **person** RENAME TO **people**;
- 删除表:
//整行删除
delete from info where name='test';
//删除列
alter table info drop column age;
//删除表
drop table info;
- 索引:
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。
类型
- 普通索引:最基本的索引,没有任何限制
- 唯一索引:与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。
- 主键索引:它 是一种特殊的唯一索引,不允许有空值。
- 全文索引:仅可用于 MyISAM 表,针对较大的数据,生成全文索引很 耗时好空间。
- 组合索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原则。创建复合索引时应该将最常用(频 率)作限制条件的列放在最左边,依次递减。
//创建普通索引
create index id_index on info(id);
//创建唯一索引
create unique index id_index on info(id);
//创建主键索引
alter table info add primary key(id);
//创建全文索引
create table infos (descript TEXT,FULLTEXT(descript));
//创建多页索引
create index multi_index on info(name,address);
!
查看索引:
show index from info;
show index from info \G;
纵向显示unique 1 不是唯一
unique 0 唯一
//删除索引 (主键、全文索引删除命令比较特殊)
drop index id_index on info;
#普通/唯一索引
alter table info drop primary key;
#主键索引
drop table infos;
#全文索引
- Mysql --排序、聚合函数:
- 排序
select from info where 1=1 order by score ;
asc–升序,可不写 #默认升序
select from info where 1=1 order by score desc ;
desc–降序
- 聚合函数
统计count() ; 可以改为1
select count(*) from info;
平均值avg ()
select avg(score) from info;
- 视图
视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。
通过视图,可以展现基表的部分数据;视图数据来自定义视图的查询中使用的表,使用视图动态生成。一张表或多张表中的数据给不同的权限用户提供访问,安全有效。
-------创建视图
create view
视图名称 AS
---------select 语句
select from info where score > 80;
查看大于80分的人
---------形成视图进行查看
create view score_view as select from info where score >80;
---------查看视图
select * from score_view;
C语言操作
- 连接
MYSQL *mysql
mysql=mysql_init(NULL); -----初始化一下
mysql_real_connect(mysql,HOST,USER,PASSWD,TESTDB,0,NULL,0)
①HOST是主机名
②user是ID
③passwd是密码
④TESTDB是数据库的名称
- 错误信息处理
mysql_error(mysql)
- 对数据库进行操作
mysql_real_query(mysql,query,strlen(query)) ------query>字符串
- 储存数据结果和释放空间
MYSQL_RES res=mysql_store_result(mysql)
mysql_free_result(res)
------必须执行才可以进行后续的操作,不然会出错
- 获取行和列
mysql_fetch_row(res)------行
原型:typedef char ** MYSQL_ROW;
MYSQL_ROW row
while(row=mysql_fetch_row(res))//row这个不能放在外面
-------------在while循环中,每一次mysql_fetch_row()都获得当前行数据,并赋值给数组,然后自动滑向下一行
mysql_num_fields(res)//列数
- 创建数据库
mysql_create_db(mysql,name)
name是数据库名称
- 选择数据库
mysql_select_db(mysql,name)
- 关闭数据库
mysql_close(mysql)】
- 数据库乱码可以通过修改编码方式来解决:
mysql_query(mysql, “SET NAMES UTF8”);
- 具体操作
1、创建表
create table 名称(
名称 类型,。。。。
);
类型 int
varchar(20)//20个字符,使用几个字节就占几个字节
char(20)就是占20个字节
text是文本类型,可以占到很大空间
timestamp//是按存入的数据时间来自动记录
2、选择表
select 名称 from 表 ;//具体选择
select * from 表 ;//特定选择
3、修改表
update 表 set 列=新值,列=新值 where 条件(加and可以实现多个条件);
4、删除表中数据
delete from 表 where 条件;
5、在表中追加列
alter table 表 add 列 类型;
6、修改列
alter table 表 change 旧列 新列;
7、表中写数据
insert into 表 values (“数值”,”数值”);//必须按顺序
8、删除列
alter table 表 drop 列
9、重命名表
alter table 表 rename 新名字
10、删除整张表
drop table 表
11、查看表的具体名称和列名字
desc 表名